我遇到的问题与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)打开它。
答案 0 :(得分:8)
这是(见IMSoP评论)PHP的一个可怕特征。它被称为“魔术引号”,可以在配置文件中启用和禁用。 Here's an article on disabling it.
简而言之,请将其放入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
答案 1 :(得分:0)
检查你是否启用了魔法引号:
get_magic_quotes_gpc();
如果此函数返回true,那就是问题,你必须在php.ini中关闭它 http://php.net/manual/en/security.magicquotes.php