今天我遇到了一些奇怪的PHP,我没有在文档中找到合适的解释。考虑下面的代码:为什么PHP中的_GET错误地解码斜线?
<?php
echo $_GET['t']. PHP_EOL;
?>
该代码很简单 - 它只需要一个单一的参数在url上并输出回来。 ?所以,如果你用test.php的牛逼称之为=%5CA(%5C是 '\'),我期望看到:
\a
然而,这是我得到了什么:
$ curl http://localhost/~boaz/test.php?t=%5Ca
\\a
注意双斜线。任何人都可以解释发生了什么,并提供检索URL中提供的字符串的配方?
感谢, 波阿斯
PS。我正在使用PHP 5.2.11
可以通过使用stripslashes()函数来治愈 – 2010-03-15 15:39:53
你很容易受到SQL注入。您应该始终使用参数化查询。没有理由。 – Kibbee 2010-03-15 15:59:18
Magic_quotes将会在PHP 6中被删除,所以最好不要依赖它。 – 2010-03-15 16:03:45