这是一个简单的问题,答案很奇怪。
get_magic_quotes_gpc()报告0。我重复一遍,魔术引号已关闭。魔术引号似乎已被禁用php.ini(不是在运行时)。
get_magic_quotes_gpc()
php.ini
不过,在PHP中访问时,包括单引号(’)在内的所有POST数据都会被转义。是什么原因造成的?
在准备测试用例时,我发现了问题的一般根源。当我们的应用程序与WordPress多站点安装集成时,我们正在引导WordPress。当我禁用WordPress引导程序时,会禁用自动转义。WordPress的自动转义代码可能位于何处?
我想我找到了。问题(错误):http : //core.trac.wordpress.org/ticket/18322
解决方案:http : //codex.wordpress.org/Function_Reference/stripslashes_deep
$_GET = array_map('stripslashes_deep', $_GET); $_POST = array_map('stripslashes_deep', $_POST); $_COOKIE = array_map('stripslashes_deep', $_COOKIE); $_SERVER = array_map('stripslashes_deep', $_SERVER); $_REQUEST = array_map('stripslashes_deep', $_REQUEST);
注意:如@Alexandar O’Mara所建议,您可能要重新考虑像这样覆盖超全局变量。例如,如果适合您的情况,则可以使用诸如$post = array_map('stripslashes_deep', $_POST);
$post = array_map('stripslashes_deep', $_POST);
另请参阅@quickshiftin的出色答案。