gpt4 book ai didi

php - 为什么 PHP 中的 _GET 会错误地解码斜杠?

转载 作者:行者123 更新时间:2023-12-02 19:37:10 26 4
gpt4 key购买 nike

今天我在使用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com