WordPress 中的魔术引号难题
尽管禁用了 PHP 的魔术引号(通过 get_magic_quotes_gpc() 返回 0 验证),POST 数据仍然被转义。当 WordPress 集成到多站点安装中时,就会出现此问题。
WordPress 在自动转义中的角色
自动转义的原因在于 WordPress 的代码库中。即使禁用了魔术引号,WordPress 中的错误(票号 #18322)也会尝试清理输入。解决方案是按照法典中的建议,手动从输入数据中显式去除斜杠。
深度去除斜杠
要解决此问题,请从超全局深度去除斜杠使用 stripslashes_deep() 函数的数组($_GET、$_POST、$_COOKIE、$_SERVER 和 $_REQUEST):
<code class="php">$_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);</code>
替代方法
或者,考虑在特定数组上本地使用 array_map() 而不是覆盖超全局变量:
<code class="php">$post = array_map('stripslashes_deep', $_POST);</code>
注意事项
如上所示修改超全局变量可能会对您的应用程序产生影响。如果特定上下文允许,请考虑选择性剥离以保持数据完整性。请参阅提供的参考资料以获取更多见解。
以上是为什么即使在禁用魔术引号后我的 WordPress POST 数据也会逃逸?的详细内容。更多信息请关注PHP中文网其他相关文章!