【问题标题】:Stripping slashes from mysql_real_escape_string output in PHP从 PHP 中的 mysql_real_escape_string 输出中去除斜线
【发布时间】:2011-03-08 05:31:53
【问题描述】:

我有这样的东西:$foo = mysql_real_escape_string($_GET["t"])。假设 t = Stack's Overflow

在这种情况下,我回显 $foo,它会返回类似 Stack\\\'s Overflow 的内容。我如何停止这种行为并让 $foo 与我没有逃脱它的情况相同?

即使使用strip_slashes(),我仍然会得到最后一个斜线。

我的字符串是这样的:

  1. 在搜索框中输入
  2. 发布到 mysql_real_escape_string() 所在的文件
  3. 重定向到搜索?term=string
  4. mysql_real_在 $_GET 操作的情况下再次转义
  5. 在数据库中搜索该字符串。它从创建时开始存储 mysql_real_escape_string()。所以它看起来像数据库中的Stack\'s

字符串一直以Stack\'s 的形式到达最后一页(应该是这样)。但是,查询不会返回类似的结果,即使它在数据库中看起来是这样的。

编辑:

此外,当它碰到 & 符号时,它会搞砸。就像如果我有 t = Stack & Overflow 那么它只会将 Stack 存储在变量 $foo 中。

【问题讨论】:

  • 你为什么要反转mysql_real_escape_string?只需将值的非转义版本存储在另一个变量中即可~
  • stripslashes(stripslashes($str)) ?

标签: php mysql


【解决方案1】:

在 GET 变量 转义之前禁用魔术引号或去除斜线。

【讨论】:

    【解决方案2】:

    假设您已经禁用了 magic_quotes(从 php 5.2.0 开始,默认),这可能只是因为您不止一次地转义了您的输出。

    检查一下可能会有所帮助,因为该函数的目的是按照字面意思将相同的数据放入数据库中,而不是在检索时会被误解的奇怪字符。

    【讨论】:

      猜你喜欢
      • 2015-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 2010-09-17
      相关资源
      最近更新 更多