php中get_magic_quotes_gpc()函数说明
get_magic_quotes_gpc函数是一个用来判断是否为用户提供的数据增加斜线了,这个在php.ini配置文件中哦,下面我来介绍一下get_magic_quotes_gpc()函数说明.
get_magic_quotes_gpc函数介绍
取得PHP环境变数magic_quotes_gpc的值,属于PHP系统功能。
语法:longget_magic_quotes_gpc(void);
返回值:长整数
本函数取得PHP环境配置的变量magic_quotes_gpc(GPC,Get/Post/Cookie)值。返回0表示关闭本功能;返回1表示本功能打开。
当magic_quotes_gpc打开时,所有的‘(单引号),”(双引号),(反斜线)and空字符会自动转为含有反斜线的溢出字符。
magic_quotes_gpc设置是否自动为GPC(get,post,cookie)传来的数据中的'”加上反斜线。可以用get_magic_quotes_gpc()检测系统设置。
如果没有打开这项设置,可以使用addslashes()函数添加,它的功能就是给数据库查询语句等的需要在某些字符前加上了反斜线。
这些字符是单引号(')、双引号(”)、反斜线()与NUL(NULL字符)。
默认情况下,PHP指令magic_quotes_gpc为on,它主要是对所有的GET、POST和COOKIE数据自动运行addslashes()。
不要对已经被magic_quotes_gpc转义过的字符串使用addslashes(),因为这样会导致双层转义。遇到这种情况时可以使用函数get_magic_quotes_gpc()进行检测。
例
利用get_magic_quotes_gpc()预防数据库攻击的正确做法
代码如下
<?php functioncheck_input($value) { //去除斜杠 if(get_magic_quotes_gpc()) { $value=stripslashes($value); } //如果不是数字则加引号 if(!is_numeric($value)) { $value=“‘”.mysql_real_escape_string($value).“‘”; } return$value; } $con=mysql_connect(“localhost”,“hello”,“321″); if(!$con) { die(‘Couldnotconnect:‘.mysql_error()); } //进行安全的SQL $user=check_input($_POST['user']); $pwd=check_input($_POST['pwd']); $sql=“SELECT*FROMusersWHERE user=$userANDpassword=$pwd”; mysql_query($sql); mysql_close($con); ?>
总结如下:
1.对于magic_quotes_gpc=on的情况,
我们可以不对输入和输出数据库的字符串数据作
addslashes()和stripslashes()的操作,数据也会正常显示。
如果此时你对输入的数据作了addslashes()处理,
那么在输出的时候就必须使用stripslashes()去掉多余的反斜杠。
2.对于magic_quotes_gpc=off的情况
必须使用addslashes()对输入数据进行处理,但并不需要使用stripslashes()格式化输出
因为addslashes()并未将反斜杠一起写入数据库,只是帮助mysql完成了sql语句的执行
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持毛票票!