【问题标题】:PHP outputting back slashes [duplicate]PHP输出反斜杠[重复]
【发布时间】:2019-02-28 21:59:02
【问题描述】:

可能重复:
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.

【问题讨论】:

  • ...搜索string escaping
  • hakra 通知每个人可能是重复的似乎非常没有效率......
  • @user1592953:当问题被标记为重复时,它会自动插入。在发布问题之前,请搜索重复项。该评论有助于其他人审查关闭决定,如果他们认为相同,也可以投票支持关闭。
  • @user1592953 - 如果另一个问题是重复的,那么指向它有什么意义?无论如何,在尝试诊断问题之前,我都需要查看一些实际代码。有许多可能的原因,但我们需要查看代码才能准确诊断并就如何改进它提供有用的建议。

标签: php mysql html


【解决方案1】:

两个可能的原因:

原因一:

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

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

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

原因二:

您(或您的输入函数之一)正在使用 addlashes() 来防止 SQL 注入。这是不安全的。准备好的语句(使用 PDO 或 mysqli)是唯一可接受的防止 SQL 注入的方法。

【讨论】:

  • magic_quotes_gpc(您关注的那个)与从数据库返回的数据(即问题所涉及的数据类型)无关,仅与来自浏览器的数据有关。见stackoverflow.com/a/12555360/367456,很可能是magic_quotes_runtime
  • @hakra 但是如果引号在插入之前被转义,那么magic_quotes_gpc 肯定也可能是问题吗?
  • 当然,这就是为什么我建议在此处关闭此问题作为以下内容的副本:Why are escape characters being added to the value of the hidden input - 我的意思是,如果答案已经存在,谁需要输入? :)
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      我认为你应该看看addslashesstripslashes

      例子

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

      输出

      I'm hiking in Colorado's Mountains.
      

      【讨论】:

      • 如果他们想让斜线出现怎么办?
      • 那你就不用stripslashes
      【解决方案5】:

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

      此功能自 PHP 5.3.0 起已弃用,自 PHP 5.4.0 起已移除。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-02-01
        • 1970-01-01
        • 2017-05-12
        • 1970-01-01
        • 2018-10-16
        • 2018-07-26
        • 1970-01-01
        相关资源
        最近更新 更多