Apols如果之前有人询问过。我正在使用别人的PHP代码并遇到以下问题:
if($_GET['file']{0}=='.') die('Wrong file!');
if,$ _GET和die我明白了,但$ _GET ['file']之后{0}的含义是什么?我查看了很多教程并没有得到答案。
TIA。
答案 0 :(得分:11)
$str{0}
将返回字符串的第一个字符/字节。但是the syntax $str{0}
is deprecated in favor of $str[0]
:
注意:为了同样的目的,也可以使用大括号访问字符串,如
$str{42}
中所示。但是,从PHP 5.3.0开始,不推荐使用此语法。请改用方括号,例如$str[42]
。
如果您使用的是多字节字符,请改用mb_substr
。
答案 1 :(得分:5)
{0}
与[0]
相同。因此,$_GET['file']{0}
从$_GET['files']
获得第0个字符。
答案 2 :(得分:4)
这是访问字符串的第一个字符的简写。 $ _GET ['file'] {1}将是第二个字符,依此类推。所以在你的例子中,它检查第一个字符是否是一个点,如果是,则退出;大概是为了避免人们在URL中传递路径,例如../../../ etc / passwd。
答案 3 :(得分:1)
正如其他人所说,它正在查看变量$ _GET ['file']中的字符串位置0,如果恰好是一个点,则会抛出错误。
这看起来像是一种(相对粗糙的)防止黑客攻击的方法,如果他试图访问以点开头的文件,则阻止用户。