在客户端,我正在处理 JavaScript 对象数组。提交时,我需要将其以表单形式发送到 PHP,并在服务器端进一步操作数据。
因此,当在 JavaScript 端构建或更改对象数组时,我将其保存到隐藏输入。它的形式符合预期,但问题是 json_decode
返回NULL
如果我不这样做stripslashes
在解码之前。
当我使用 PHP > 5.5 和 get_magic_quotes_gpc()
时,魔术引号被关闭。总是返回FALSE
.
为什么在这种情况下我需要stripslashes,在任何关闭魔术引号的生产服务器上都会出现这种情况吗?
P.S.:目前我仍在 Windows 和 EasyPHP 上开发环境。本地服务器。
服务器端发布的数据如下所示( var_dump
):
我使用 WordPress 作为我的应用程序的容器。
string(5045) "[{\"address_components\":[{\"long_name\":\"Flughafenstrasse\",\"short_name\":\"Flughafenstrasse\"...
最佳答案
我正在开发的应用程序是一个 WordPress 插件,因为它集成在 WordPress 中。事实证明,WordPress(截至当前版本:3.8.1)在加载时向 GET 和 POST 数据添加斜杠(引号)。即使 PHP > 5.4 和 get_magic_quotes_gpc
返回 0
数据仍然会被转义。
如果您使用 WordPress,解决方案就是简单地stripslashes
,但谁知道 WordPress 何时会禁用此类行为,您的应用程序将再次出现问题:)
该问题的一些链接:
关于javascript - 如果没有 stripslashes,json_decode 将无法工作(WordPress 中的 magic_quotes),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21849455/