3

在 PHP 中,$_POST 会自动在引号前添加斜杠,那么为什么还要使用 mysql_real_escape_string()?例如,当我'rrr在输入字段中输入时,\'rrr当我回显它时我得到了。

4

3 回答 3

11

因为只有在您的 php 配置中启用了 MacigQuotes 时才会发生这种情况,据我所知,这种情况现在相当少见。此外,mysql_real_escape_string 也会转义其他 MySQL 相关字符。

查看http://php.net/manual/en/security.magicquotes.php以获取有关魔术引号的更多信息。

正如你所看到的,这个指令已经有一个弃用警告,所以你还是应该检查你的服务器配置^^

编辑:要禁用魔术引号,请在您的 xampp 文件夹中搜索 php.ini,然后添加或更改(如果存在)以下指令:

; 魔术报价
;

; 传入 GET/POST/Cookie 数据的魔术引号。
magic_quotes_gpc = 关闭

; 运行时生成数据的魔术引号,例如来自 SQL、来自 exec() 等的数据。
magic_quotes_runtime = 关闭

; 使用 Sybase 风格的魔术引号(使用 '' 而不是 \' 转义 ')。
magic_quotes_sybase = 关闭
于 2009-11-17T09:48:15.407 回答
6
  1. mysql_real_escape_string 转义的不仅仅是单引号,因为还有其他可能导致注入问题的字符。
  2. 如果启用了 magic_quotes,PHP 只会在 POST 的输入中添加斜杠,这被认为是不好的做法(因为它会导致懒惰并且不使用诸如 real_escape_string 之类的东西!)
于 2009-11-17T09:47:54.907 回答
3

自 PHP 5.3.0 起不推荐使用魔术引号,自 PHP 6.0 起已过时。

编辑:所以不能依赖自动斜杠,因为大多数 PHP 安装不推荐使用它们,并且很快就根本不起作用。

于 2009-11-17T09:50:04.790 回答