作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
今天我在使用 PHP 时遇到了一些奇怪的情况,我未能在文档中找到正确的解释。考虑以下代码:
<?php
echo $_GET['t']. PHP_EOL;
?>
代码很简单 - 它在 url 上采用单个 t 参数并将其输出回来。因此,如果您使用 test.php?t=%5Ca 调用它(%5c 是“\”),我希望看到:
\a
但是,这就是我得到的:
$ curl http://localhost/~boaz/test.php?t=%5Ca
\\a
注意双斜杠。谁能解释一下发生了什么,并给出检索 URL 上提供的字符串的方法?
谢谢,波阿斯
PS。我正在使用 PHP 5.2.11最佳答案
发生这种情况是因为您打开了 php.ini 中的“魔术引号”开关。来自手册:
When on, all ' (single-quote), " (double quote), \ (backslash) and NULL characters are escaped with a backslash automatically. This is identical to what addslashes() does.
在这里阅读更多相关信息:http://php.net/manual/en/security.magicquotes.php
为了让您的脚本了解 php.ini 中“magic_quotes_gpc”设置的任何值,您可以像这样编写脚本:
$d = $_GET["d"];
if (get_magic_quotes_gpc()) $d = stripslashes($d);
echo $d; //but now you are kind of vulnerable to SQL injections
//if you don't properly escape this value in SQL queries.
关于php - 为什么 PHP 中的 _GET 会错误地解码斜杠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2448332/
我是一名优秀的程序员,十分优秀!