小编Kzq*_*qai的帖子

PHP是否使用带exec()的$$,以及如何为下一个脚本保留它?

我使用PHP 在其命令行exec()中的Bash中启动进程$$.但是当使用PHP时,PHP本身似乎采用变量$$而不是让Bash在脚本中使用它.

PHP使用这个变量吗?假设如此,我如何为Bash脚本保留它?

示例:在Bash中exec('echo $$')执行echo 1538,而不是echo $$,因为PHP似乎已采用变量$$.

php bash

4
推荐指数
1
解决办法
136
查看次数

polyfill for css:target,not()和[tilde]兄弟选择器?

我现在想开始使用css:target,not()和~sibling selectors.这些是否有填充物或其他解决方案?我更喜欢能够简单地使用css而不是使用js/jQuery来为每次使用模拟它们.

css css-selectors css3 polyfills

3
推荐指数
1
解决办法
3063
查看次数

是否有任何基本的理由在php中使用isset()over @

所以我正在努力清理一个可怕的代码库,我正在慢慢转向完整的错误报告.

这是一个艰巨的过程,有数百条通知:

Notice: Undefined index: incoming in /path/to/code/somescript.php on line 18
Run Code Online (Sandbox Code Playgroud)

由于使用变量假设未定义的变量将只处理为false,如:

if($_SESSION['incoming']){
    // do something
}
Run Code Online (Sandbox Code Playgroud)

目标是能够知道何时引入了错误的未定义变量,使用严格错误/通知检查的能力,作为重构过程的第一阶段 - 最终将包括重写依赖于标准输入的代码点这样的数组.我知道有两种方法可以替换一个变量,该变量可能会以抑制通知的方式定义,如果尚未定义的话.

只更换一个变量的实例是相当干净的,就像$_REQUEST['incoming']只查找truthy值一样

@$_REQUEST['incoming'].
Run Code Online (Sandbox Code Playgroud)

替换变量的实例非常脏,就像$_REQUEST['incoming']"标准"测试一样

(isset($_REQUEST['incoming'])? $_REQUEST['incoming'] : null)
Run Code Online (Sandbox Code Playgroud)

而且你添加了一个三元/内联if,这是有问题的,因为你实际上可以在复杂的代码中以不同的方式嵌套parens并完全改变行为.

所以.......与使用@相比,使用错误抑制符号是否有任何不可接受的方面(isset($something)? $something : null)

编辑:为了尽可能清楚,我不是要比较"将代码重写为好"和"@",这是因为真正的重构增加了复杂性,这个过程的后期阶段.我只是比较了我所知道的两种方式(可能还有其他方法),用现在的非通知抛出版本替换$ undefined_variable.

php syntax syntax-error

3
推荐指数
1
解决办法
137
查看次数

在圣经中清理输入和输出的圣杯?

我在过去的8个月里一直在运行并开发了一个机密网站,所有的错误只是由于一个原因:用户如何输入文字...

我的问题是:是否有一个php类,一个插件,我可以做的事情

$str = UltimateClean($str) 在发送$ str到我的sql之前?

PS.我还注意到当我开始使用JSON时问题加倍,因为我还必须小心地在JSON中输出结果.

我遇到的一些问题:多语言字符串(不同的字符集),Excel工作表中的复制粘贴.
注意:我并不担心SQL注入.

javascript php mysql json

3
推荐指数
1
解决办法
673
查看次数

嵌套dom对象属性的typeof多次检查的更好替代方法

我经常发现,为避免dom内容出现未定义的错误,我必须执行以下操作:

if("undefined" != typeof parent 
    && "undefined" != typeof parent.main 
    && "undefined" != typeof parent.main.location){
// Act on a current iframe page from that page's parent location
}
Run Code Online (Sandbox Code Playgroud)

否则,当使用如此大量嵌套的dom对象时,就有可能会得到未定义的错误。有没有更简单的方法来检查这些嵌套对象的属性而不破坏所有内容?

javascript dom undefined

3
推荐指数
1
解决办法
1163
查看次数

在php中,我可以使一个对象与一个数组类似吗?那我该怎么办?

我知道通过实现iterable你可以使一个对象能够被foreach编辑.我想更进一步,让一个对象像一个数组一样反应在尽可能多的地方进行数组调用.

(原因是因为我从数据库中选择数据,默认情况下产生的语句对象在内存上非常好,而数组形式的完整数据集往往会将内存使用量投入轨道.我喜欢两种世界中最好的,具有较低内存使用率的数组类型用法,直到调用数组类型的行为为止.)

php arrays memory-management object

2
推荐指数
1
解决办法
233
查看次数

php:有很好的理由引用所有数组键/索引吗?

我正在运行别人的代码,他们经常避免逃避他们的数组键.

例如:

$ row_rsCatalogsItems [名]

代替

$ row_rsCatalogsItems [ '名称']

所以我经常对我触摸的所有东西进行微小的改动,以应对那种懒惰.但现在我想知道这样做是否有很多好处.我拿到它会默认为一个字符串之前检查常数(我讨厌在PHP行为与常量打交道时,因为它们验证为真,即使没有定义),但我不知道,甚至是值得的麻烦的更改所有常量 - 数组键的许多实例.

建议?

php syntax

2
推荐指数
1
解决办法
375
查看次数

php匹配any/match任何运算符等价物

我经常发现自己写的东西 if($var == 'bob' || $var == 'steven || $var == 'james'){ ...

在php中是否有一种更流畅的方式来检查var是否与任何运算符匹配?或者我必须编写自己的函数,如:

function matches_any($question, $pos_answer, $pos_answer, $pos_answer, $pos_answer, ...){
// Call the function args, get the first one, get the rest, compare all the rest, return true if any match, return false by default.
}
Run Code Online (Sandbox Code Playgroud)

因此将使用哪个:

if(matches_any($var, $bob, $steven, 'james', $william)){ ...
Run Code Online (Sandbox Code Playgroud)

php operators

2
推荐指数
1
解决办法
290
查看次数

在不支持它的浏览器中,html5 required属性是否会优雅地降级?

我喜欢required在表单上使用该属性,但我不知道旧浏览器如何处理这个(对他们来说)未知的属性.

旧版浏览器是否会很好地忽略(从而允许优雅地降级)html5 required属性?

html5 attributes cross-browser graceful-degradation

2
推荐指数
1
解决办法
272
查看次数

preg_match用户名验证正则表达式允许>和<尽管这些字符未被列入白名单

我有这个相对简单的用户名正则表达式

// Enforce that username has to be 3-100 characters, alphanumeric, and first character a letter.
// Possibility without begin/end characters and i: [a-z][a-z0-9@.+-_]{2,100}
// Allow for simple email usernames in the future...
return !!preg_match('#^[a-zA-Z][a-zA-Z0-9@.+-_]{2,100}$#', trim($username));
Run Code Online (Sandbox Code Playgroud)

不幸的是,它允许这些XSS就绪测试字符串:

'angle<bracket',
'angle>bracket',
'html<script>inside',
Run Code Online (Sandbox Code Playgroud)

我不知道为什么因为他们已经明确地被正则表达式所禁止了.

这是一个运行测试用例:

http://ideone.com/od7dj

任何人都知道为什么正则表达式允许使用尖括号而没有明确允许它们?我是否应该将其中一个字符(.+ - )作为文字转义?

php regex preg-match

2
推荐指数
1
解决办法
396
查看次数