4

我用 javascript 构建了我的 xml 文件,并使用如下警报正确显示它:

<Voitures>
   <voiture par1="4" par2="1" par3="0"/>
   <voiture par1="3" par2="0" par3="0"/>
</Voitures>

但问题是当我用 ajax 将它发送到一个 php 文件时,我得到了这个结果:

<Voitures>
   <voiture par1=\"4\" par2=\"1\" par3=\"0\"/>
   <voiture par1=\"3\" par2=\"0\" par3=\"0\"/>
</Voitures>

谢谢

4

1 回答 1

8

您的 PHP 配置启用了魔术引号,这是一个已弃用的设置,任何人都不应再使用。它已在 PHP 5.4 中删除。 立即禁用它,否则您可能会编写升级到 PHP 5.4 时行为不正确的代码。

如果这是不可能的,请先使用stripslashes()该值,然后再对其进行任何其他操作。 仅当您确实无法禁用魔术引号时才这样做。开发启用魔术引号的 PHP 软件是一个非常非常糟糕的主意。


如果您正在尝试编写好的代码并面向未来,请将其作为每个文件的顶部,或者一些在任何地方都可以使用的常见包含文件:

if (get_magic_quotes_gpc()) {
    trigger_error("Magic quotes are enabled; please disable them.", E_USER_ERROR);
}

如果启用了魔术引号,这将使您的应用程序简单地拒绝运行。

如果您可以选择,.htaccess请随您的应用程序提供一个包含以下内容的文件:

php_flag magic_quotes_gpc Off

如果可能,这将在 Apache 上解聚时禁用整个应用程序的魔术引号。如果 Apache 配置不允许文件中的php_flag指令,.htaccess那么这将导致 HTTP 500 错误,这比让您的应用程序在启用魔术引号的情况下运行要好得多。

于 2012-09-07T21:06:28.863 回答