【问题标题】:PHP: URL with a quote results in backslash in GET-parameter?PHP:带引号的 URL 会导致 GET 参数中的反斜杠?
【发布时间】:2014-09-22 00:25:29
【问题描述】:

如果我在Chrome的网址栏中输入网址http://localhost/script.php?a=",其中script.php为如下测试代码:

var_dump( $_GET );
print '<br>';
var_dump( urldecode($_GET['a']) );
die();

结果看起来像

array(1) { ["a"]=> string(2) "\"" } 
string(2) "\""

Chrome(或 Apache/PHP?)似乎在引号前添加了反斜杠。如果我在 URL 中使用 %22 而不是引号字符,也会发生同样的事情。不应该这样吧?

我不记得以前有过这个问题,但这是 PHP 和 Apache 的一个相当“新”的(对我而言)安装,那么可能是我的安装中的一些配置导致了这个问题吗?

【问题讨论】:

  • 听起来你有magic quotes,应该升级到新版本的PHP。

标签: php apache url url-encoding stripslashes


【解决方案1】:

试试下面 -

var_dump( $_GET );
print '<br>';
var_dump( urldecode(stripslashes($_GET['a'])));
die();

这是因为您的 php.ini 文件中的 magic_quotes 为 ON - 您可以在 php.ini 中添加以下内容,这应该可以。

magic_quotes_gpc = Off
magic_quotes_runtime = Off
magic_quotes_sybase = Off

【讨论】:

  • 当然 stripslashes() 会起作用,但是在 GET 参数上真的有必要吗?我不记得以前必须这样做吗?
  • 噢!就是这样,我自己也发现了。如果您更新原始答案,我会接受...
猜你喜欢
  • 2011-07-21
  • 2012-03-06
  • 2011-09-13
  • 1970-01-01
  • 2022-11-28
  • 2014-06-19
  • 1970-01-01
  • 2017-05-17
相关资源
最近更新 更多