为什么要这么麻烦使用mysql_real_escape_string()since$_POST就将此斜线的前一个报价自动?

StackOverflow https://stackoverflow.com/questions/1747677

在PHP$_POST加斜线之前标报价自动进行,所以为什么还要施加mysql_real_escape_string()?例如,当我输入 'rrr 在输入领域,并且我得到 \'rrr 当我回声。

有帮助吗?

解决方案

由于,只有当MacigQuotes在你的PHP配置,其中,因为据我所知,是相当罕见的启用时下发生。另外,也mysql_real_escape_string逸出其他MySQL相关字符。

查核 http://php.net/manual/en/security.magicquotes .PHP 以上魔术引号的更多信息。

你可以看到,已经有此指令产生警告,所以你无论如何都应该检查你的服务器配置^^

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

; 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

其他提示

  1. mysql_real_escape_string逃更多的不仅仅是单一的报价,因为还有其它的字符,可能会导致注的问题。
  2. PHP只增加了斜杠张贴输入如果magic_quotes启用,这被认为是不良做法(因为它导致懒惰和无用的东西喜欢real_escape_string!)

魔术引号被弃用PHP 5.3.0 的和已过时在PHP 6.0的

编辑:所以自动斜线不能依赖,因为他们大多数PHP安装过时,很快将无法工作。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top