最近学了学PHP,看到这段代码
function daddslashes($str){
return (!get_magic_quotes_gpc())?addslashes($str):$str; }
发现get_magic_quotes_gpc())和addslashes()函数不太熟悉,就查了下资料,如下:
get_magic_quotes_gpc();就是取得php环境变量magic_quotes_gpc的值。如果值为1时,表示开启;如果为0时,表示该配置关闭!
-
get_magic_quotes_gpc();值为1,表示开启。那么 php会自动为POST、GET、COOKIE传过来的参数值自动增加转义字符“\”,来确保这些数据的安全性。尤其是防止SQL注入。
-
get_magic_quotes_gpc();值为0,表示关闭。php解析器不会自动为POST、GET、COOKIE传过来的参数值加转义字符“\”,那么这时就用addslashes函数来转义参数了。
-
get_magic_quotes_gpc();未开启,用addslashes函数过滤参数防止注入示例:
<?php
$str=$_POST['str'];
if(!get_magic_quotes_gpc()){//首先判断未开启
$newStr=addslashes($str);//然后用addslashes函数过滤
}
?>
-
addslashes() 函数在指定的预定义字符前添加反斜杠。
这些预定义字符是:
- 单引号 (')
- 双引号 (")
- 反斜杠 (\)
- NULL
-
- 默认情况下,PHP 指令 magic_quotes_gpc 为 on,对所有的 GET、POST 和 COOKIE 数据自动运行 addslashes()。不要对已经被 magic_quotes_gpc 转义过的字符串使用 addslashes(),因为这样会导致双层转义。遇到这种情况时可以使用函数 get_magic_quotes_gpc() 进行检测。
- 讲得还蛮清楚的,所以就收藏起来了!!!
注明:源自网络