$ _SERVER ['QUERY_STRING']与|

时间:2013-03-25 00:40:55

标签: php query-string

我在PHP脚本中使用$_SERVER['QUERY_STRING']。我的?e+e查询字符串工作正常,但?e|e没有。

我的PHP脚本很简单:

<?php
echo $_SERVER['QUERY_STRING'];
?>

为什么|不起作用?如果我不使用|,我似乎可以使用$_SERVER['QUERY_STRING']

3 个答案:

答案 0 :(得分:0)

如果您在浏览器中手动添加管道符号,则可能会发生这种情况

尝试这样做:?e%7Ce

答案 1 :(得分:0)

您需要将|符号编码为%7C。然后它会工作。 $_SERVER['QUERY_STRING']会自动解码。

答案 2 :(得分:0)

这不是正确的QUERY_STRING原因“|”是不允许的符号。 RFC 2396 2.3。

Data must be escaped if it does not have a representation using an
unreserved character; this includes data that does not correspond to
a printable character of the US-ASCII coded character set, or that
corresponds to any US-ASCII character that is disallowed, as
explained below.