0

可能重复:
“每个引用前的斜线”问题

我使用如下代码在我的 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环境之间设置的差异。我一直在寻找,直到我的眼球起泡,但我找不到区别。url 中传递的内容如下所示:

sites.php?msg="Some site" modified

如果我把这段代码:

$msg=htmlspecialchars($msg);

在上面的变量赋值和标头调用之间,url 如下所示:

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

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

谁能解释这里发生了什么,以及如何解决它?

4

3 回答 3

1

该配置称为magic_quotes_gpc

于 2012-08-24T07:46:53.623 回答
1

您已Magic Quotes在 PHP.INI 中启用将它们设置为禁用。

于 2012-08-24T07:49:54.117 回答
-1

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

<?php if (isset($_GET['msg'])) {echo '<p><em>'.stripslashes($_GET['msg']).'</em></p>';}?>
于 2012-08-24T07:46:19.527 回答