这里有新鲜出炉的 PHP 教程,程序狗速度看过来!
PHP(外文名: Hypertext Preprocessor,中文名:"超文本预处理器")是一种通用开源脚本语言。语法吸收了 C 语言、Java 和 Perl 的特点,入门门槛较低,易于学习,使用广泛,主要适用于 web 开发领域。PHP 的文件后缀名为 php。
get_magic_quotes_gpc 函数是一个用来判断是否为用户提供的数据增加斜线了,这个在 php.ini 配置文件中哦,本文将介绍一下 get_magic_quotes_gpc() 函数说明。下面跟着小编一起来看下吧
get_magic_quotes_gpc 函数是一个用来判断是否为用户提供的数据增加斜线了,这个在 php.ini 配置文件中哦,下面我来介绍一下 get_magic_quotes_gpc() 函数说明.
get_magic_quotes_gpc 函数介绍
取得 PHP 环境变数 magic_quotes_gpc 的值,属于 PHP 系统功能。
语法: long get_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
- function check_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('Could not connect: ' . mysql_error());
- }
- // 进行安全的 SQL
- $user = check_input($_POST['user']);
- $pwd = check_input($_POST['pwd']);
- $sql = "SELECT * FROM users WHERE
- user=$user AND password=$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 语句的执行
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持 PHPERZ!
来源: http://www.phperz.com/article/17/0812/340623.html