PHP输出反斜杠

时间:2012-09-23 18:54:16

标签: php mysql html

  

可能重复:
  Why are escape characters being added to the value of the hidden input

我正在查询数据库中表的用户帖子。当我输出它们并且它们包含撇号时,在撇号之前插入反斜杠。

为什么这样做?我该怎么做才能解决这个问题?

示例:

I'm hiking in Colorado's Mountains.

I\'m hiking in Colorado\'s Mountains.

5 个答案:

答案 0 :(得分:1)

两个可能的原因:

原因一:

您的服务器上启用了魔术引号。要测试魔术引号,只需使用以下代码:

if(get_magic_quotes_gpc()){
    echo 'Magic quotes are enabled...';
}

如果启用了魔术引号,则需要禁用它们(并向您的网络主机投诉)。 PHP manual has a page dedicated to disabling magic quotes

原因二:

您(或您的某个输入函数)正在使用addslashes()作为SQL注入的保护。这不安全。准备好的语句(使用PDO或mysqli)是防止SQL注入的唯一可接受的保护方法。

答案 1 :(得分:0)

很可能是转义字符(由于mysql_real_escape_string)或沿着这些行的东西。您可以使用stripslashes()函数删除斜杠,但我建议您在数据上使用htmlentities()htmlspecialchars()来增加安全性。

答案 2 :(得分:0)

您可以使用http://php.net/manual/en/function.mysql-escape-string.php。考虑使用http://php.net/manual/en/book.pdo.php它有方法准备哪个准备sql语句,它通常更好和它的OOP。 (我猜你正在使用mysql_ *函数)

答案 3 :(得分:0)

我认为你应该看看addslashesstripslashes

实施例

$text = "I\'m hiking in Colorado\'s Mountains." ;
echo stripslashes($text);

输出

I'm hiking in Colorado's Mountains.

答案 4 :(得分:0)

您需要验证以下PHP配置设置:

  

自PHP 5.3.0开始,此功能已被弃用,自PHP 5.4.0起已被删除。

我的建议:将您的PHP版本升级到5.4.x,这个问题就会消失,您可以从许多其他新功能中获益。