为什么要这么麻烦使用mysql_real_escape_string()since$_POST就将此斜线的前一个报价自动?
-
20-09-2019 - |
题
在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
其他提示
- mysql_real_escape_string逃更多的不仅仅是单一的报价,因为还有其它的字符,可能会导致注的问题。
- PHP只增加了斜杠张贴输入如果magic_quotes启用,这被认为是不良做法(因为它导致懒惰和无用的东西喜欢real_escape_string!)
魔术引号被弃用PHP 5.3.0 的和已过时在PHP 6.0的
编辑:所以自动斜线不能依赖,因为他们大多数PHP安装过时,很快将无法工作。
不隶属于 StackOverflow