在客户端,我正在使用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\"...
答案 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