为什么我引用的文字显示为“像这样”?

时间:2012-08-24 07:44:09

标签: php magic-quotes-gpc

  

可能重复:
  “slash before every quote” problem

我使用如下代码在我的php应用程序的不同部分之间传递消息:

$msg='"'.$_REQUEST['site'].'" modified.';
header('Location: sites.php?msg='.$msg);
exit();

在另一端拾取它的代码如下所示:

<?php if (isset($_GET['msg'])) {echo '<p><em>'.$_GET['msg'].'</em></p>';}?>

在我的开发环境中,输出如下所示:"Some site"已修改。 在我的生产环境中,输出如下所示:\"Some site\"已修改。

这让我相信环境之间php.ini的设置存在差异。我一直在搜索,直到我的眼球起水泡,但我找不到差异。在网址中传递的内容如下所示:

sites.php?msg="Some site" modified

如果我把这段代码:

$msg=htmlspecialchars($msg);

在上面的变量赋值和标题调用之间,url看起来像这样:

sites.php?msg=&quot;Some site&quot; modified.

但在这两种环境中都不会显示任何消息。如果$_REQUEST['site']包含&符号,我也会遇到类似的问题。

任何人都可以解释这里发生了什么,以及如何解决它?

3 个答案:

答案 0 :(得分:1)

配置称为magic_quotes_gpc

答案 1 :(得分:1)

您已启用Magic Quotes在PHP.INI中禁用它们。

答案 2 :(得分:-1)

使用stripslashes:http://php.net/manual/en/function.stripslashes.php

<?php if (isset($_GET['msg'])) {echo '<p><em>'.stripslashes($_GET['msg']).'</em></p>';}?>