2

我有一个与 PHP 版本有关的问题。

这是传递到 url 的原始字符串:

?path=/2013/6/14/1371207330-SBM1_Today\'s Touch Strongsville.xls

在 PHP 5.3.21 中,当我回显 $_GET['path'] 时,它返回(错误):

/2013/6/14/1371207330-SBM1_Today\\\'s Touch Strongsville.xls

在 PHP 5.3.15 中,它返回正确的版本(正确):

/2013/6/14/1371207330-SBM1_Today\'s Touch Strongsville.xls

我该如何解决这个问题,以便更高版本的 PHP 不会添加额外的转义?

对于未来的读者

该错误与PHP的版本无关,而是两个不同php安装的配置。就我而言,我的本地版本的 php.ini 配置关闭了 magic_quotes,而客户共享托管服务提供商 (HostGator) 将其打开。

4

2 回答 2

8

这是(见 IMSoP 的评论)PHP 的可怕特性之一。它被称为“魔术引号”,可以在配置文件中启用和禁用。这是一篇关于禁用它的文章。

简而言之,将其放入您的php.ini

; Magic quotes for incoming GET/POST/Cookie data.
magic_quotes_gpc = Off

; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc.
magic_quotes_runtime = Off

; Use Sybase-style magic quotes (escape ' with '' instead of \').
magic_quotes_sybase = Off
于 2013-06-14T23:08:11.820 回答
0

检查您是否打开了魔术引号:

get_magic_quotes_gpc();

如果此函数返回 true,那么这就是问题所在,您必须在 php.ini http://php.net/manual/en/security.magicquotes.php中将其关闭

于 2013-06-14T23:08:21.220 回答