${@phpinfo()} 可以直接执行phpinfo的函数。但是为什么要用到@呢?经过查找资料后发现,这个是php的可变变量
首先花括号内直接就是phpinfo(),phpinfo函数是不会执行的!
<?$a = "${phpinfo()}";?>
而以下的几种例子,phpinfo函数执行了
1,花括号内第一个字符是空格
复制代码代码示例:
<?$a = "${ phpinfo()}";?>
2,花括号内第一个字符是tab
复制代码代码示例:
<?$a = "${ phpinfo()}";?>
3,花括号内第一个字符串是注释
复制代码代码示例:
<?$a = "${/**/phpinfo()}";?>
4,花括号内第一个字符是回车
复制代码代码示例:
<?$a = "${phpinfo()}";?>
5,花括号内第一个字符是@
复制代码代码示例:
<?$a = "${@phpinfo()}";?>
可变变量内的花括号就是再次解析语法,然后这个解析语法的关键条件是花括号内的第一个字符!,空格,tab,注释,回车是各种语法分析引擎中常见的分割字符,@是PHP语法的一个特殊的容错符号,所以可变变量内的花括号有这么一个规则,需要判断花括号内的内容是否为真正的代码,条件即是文本的第一个字符串是否为PHP语法解析引擎的分割字符和特殊的语法符号。
参考文章:http://www.jquerycn.cn/a_23940
网友评论