【发布时间】:2015-06-10 14:03:17
【问题描述】:
有一个虚拟的 PHP 应用程序示例,它显示了导致我出现问题的原因。
<?PHP
echo ((isset($_GET['P'])) ? print_r($_GET) : "<a href='http://example.com/a.php?P=" . urlencode('One & Two') . "'>One & Two</a>");
?>
如果我们访问没有P参数的页面,页面会输出:
http://example.com/One+%26+Two
这很好,但是如果我们访问链接,脚本会返回:
Array
(
[P] => One
[Two] =>
)
这显然是错误的。
在实际应用中,在 url 中提交了大约 30 个字符长的字母数字字符串,其中包含特殊字母(瑞典语)。
编辑:在我的真实应用程序中,我使用 URL 重写:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^(.*)$ ../example.php?s=$1 [L,QSA]
</IfModule>
这可能是原因吗? - 确认的。这就是问题所在。请参阅下面的答案。
【问题讨论】:
标签: php parameter-passing urlencode ternary-operator