为什么要使用mysql_real_escape_string(),因为$ _POST会自动在报价前添加斜杠?

Ste*_*ven 3 php quotes post escaping mysql-real-escape-string

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

fre*_*oma 11

因为只有在你的php配置中启用了MacigQuotes才会发生这种情况,据我所知,现在这种情况并不常见.此外,mysql_real_escape_string还会转义其他MySQL相关字符.

查看http://php.net/manual/en/security.magicquotes.php,了解有关魔术报价的更多信息.

如您所见,此指令已经存在弃用警告,因此您应该检查服务器配置^^

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

; Magic quotes
;

; Magic quotes for incoming GET/POST/Cookie data.
magic_quotes_gpc = Off

; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc.
magic_quotes_runtime = Off

; Use Sybase-style magic quotes (escape ' with '' instead of \').
magic_quotes_sybase = Off


Cia*_*lty 6

  1. mysql_real_escape_string不只是单引号转义,因为还有其他字符可能导致注入问题.
  2. 如果启用magic_quotes,PHP只会向POSTed输入添加斜杠,这被认为是不好的做法(因为它会导致懒惰而不使用像real_escape_string这样的东西!)