如果没有stripslashes,json_decode将无法工作(Wordpress中的magic_quotes)

时间:2014-02-18 09:33:51

标签: javascript php json wordpress magic-quotes-gpc

在客户端,我正在使用javascript对象数组。在提交时,我需要将其发送到带有表单的PHP并在服务器端进一步操作数据。

因此,当在javascript端构建或更改对象数组时,我将其保存到隐藏输入。它是按预期传递的,但问题是json_decode如果在解码之前没有NULL则返回stripslashes

因为我使用PHP>魔术引用已关闭5.5和get_magic_quotes_gpc()始终返回FALSE

在这种情况下,有人可以解释为什么我需要striplashes,以及是否会出现魔术报价关闭的任何生产服务器的情况?

P.S。目前我还在开发Windows和EasyPHP本地服务器上的开发环境。

UPDATE:在服务器端发布的数据看起来像(var_dump):

UPDATE2:我正在使用Wordpress作为我的应用程序的容器。

string(5045) "[{\"address_components\":[{\"long_name\":\"Flughafenstrasse\",\"short_name\":\"Flughafenstrasse\"...

1 个答案:

答案 0 :(得分:2)

因此,在进一步调试后,我发现了一个问题。留下这里的答案作为其他人的参考,因为我花了两天时间才找到问题的核心原因。

我正在处理的应用程序是一个Wordpress插件,因为它集成在Wordpress中。事实证明,Wordpress(截至当前版本:3.8.1)在加载时向GET和POST数据添加斜杠(引号)。即使使用PHP> 5.4和get_magic_quotes_gpc返回0数据仍然会被转义。

如果您使用Wordpress,解决方案只是stripslashes,但谁知道Wordpress何时会禁用此类行为,而您的应用程序将再次出现问题:)

该问题的一些链接:
wp_magic_quotes()
stripslashes_deep()
Similiar issue on stackoverflow