从PHP中的mysql_real_escape_string输出中去除斜杠

时间:2011-03-08 05:31:54

标签: php mysql

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

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

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

这就是我的字符串:

  1. 键入搜索框
  2. 发布到mysql_real_escape_string()'d
  3. 的文件
  4. 重定向到搜索?term = string
  5. 在$ _GET操作
  6. 的情况下,再次使用mysql_real_escapes
  7. 在数据库中搜索该字符串。它从创建时就存储了mysql_real_escape_string()'d。所以它在数据库中看起来像Stack\'s
  8. 字符串以Stack\'s的形式一直到最后一页(这应该是它)。但是,查询不返回类似的结果,即使这是它在数据库中的确切方式。

    修改

    此外,当它击中&符时它会拧紧。就像我有t = Stack & Overflow一样,它只会将Stack存储在变量$ foo中。

2 个答案:

答案 0 :(得分:1)

在转义之前,从GET变量中禁用魔术引号或条带斜线。

答案 1 :(得分:1)

假设您已经禁用了magic_quotes(从php 5.2.0开始,默认情况下),可能只是您多次逃避输出。

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