php中get_magic_quotes_gpc()函数说明


Posted in PHP onFebruary 06, 2017

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语句的执行

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

PHP 相关文章推荐
人大复印资料处理程序_补充篇
Oct 09 PHP
PHP 定界符 使用技巧
Jun 14 PHP
PHP 读取文件内容代码(txt,js等)
Dec 06 PHP
PHP学习笔记之二
Jan 17 PHP
PHP读取xml方法介绍
Jan 12 PHP
php中有关字符串的4个函数substr、strrchr、strstr、ereg介绍和使用例子
Apr 24 PHP
PHP使用header()输出图片缓存实例
Dec 09 PHP
php删除指定目录的方法
Apr 03 PHP
PHP网站建设的流程与步骤分享
Sep 25 PHP
PHP中静态变量的使用方法实例分析
Dec 01 PHP
thinkphp 抓取网站的内容并且保存到本地的实例详解
Aug 25 PHP
PHP中PDO事务处理操作示例
May 02 PHP
PHP数字前补0的自带函数sprintf 和number_format的用法(详解)
Feb 06 #PHP
浅谈php中fopen不能创建中文文件名文件的问题
Feb 06 #PHP
PHP 类与构造函数解析
Feb 06 #PHP
PHP在linux上执行外部命令的方法
Feb 06 #PHP
php获取指定数量随机字符串的方法
Feb 06 #PHP
PHP严重致命错误处理:php Fatal error: Cannot redeclare class or function
Feb 05 #PHP
PHP中使用OpenSSL生成证书及加密解密
Feb 05 #PHP
You might like
我的论坛源代码(三)
2006/10/09 PHP
如何批量替换相对地址为绝对地址(利用bat批处理实现)
2013/05/27 PHP
深入PHP与浏览器缓存的分析
2013/06/03 PHP
JavaScript 拾漏补遗
2009/12/27 Javascript
Jquery ajaxStart()与ajaxStop()方法(实例讲解)
2013/12/18 Javascript
node.js中的fs.fsyncSync方法使用说明
2014/12/15 Javascript
Jquery中map函数的用法
2016/06/03 Javascript
JavaScript实现三级联动菜单效果
2017/08/16 Javascript
Vue利用路由钩子token过期后跳转到登录页的实例
2017/10/26 Javascript
详解vue.js数据传递以及数据分发slot
2018/01/20 Javascript
Javascript实现购物车功能的详细代码
2018/05/08 Javascript
vue项目打包之后背景样式丢失的解决方案
2019/01/17 Javascript
Node.js学习教程之Module模块
2019/09/03 Javascript
es6 for循环中let和var区别详解
2020/01/12 Javascript
[01:01:42]Secret vs Optic Supermajor 胜者组 BO3 第二场 6.4
2018/06/05 DOTA
Python常用列表数据结构小结
2014/08/06 Python
Python导入txt数据到mysql的方法
2015/04/08 Python
Python自动化开发学习之三级菜单制作
2017/07/14 Python
Python之读取TXT文件的方法小结
2018/04/27 Python
python 将列表中的字符串连接成一个长路径的方法
2018/10/23 Python
OpenCV里的imshow()和Matplotlib.pyplot的imshow()的实现
2019/11/25 Python
Django中Aggregation聚合的基本使用方法
2020/07/09 Python
python动态规划算法实例详解
2020/11/22 Python
python中PyQuery库用法分享
2021/01/15 Python
纯CSS3制作页面切换效果的实例代码
2019/05/30 HTML / CSS
HelloFresh澳大利亚:订购你的美味食品盒、健康餐食
2018/03/28 全球购物
Bibloo罗马尼亚网站:女装、男装、童装及鞋子和配饰
2019/07/20 全球购物
关于Assembly命名空间的三个面试题
2015/07/23 面试题
歌颂党的演讲稿
2014/09/10 职场文书
小学生推普周国旗下讲话稿
2014/09/21 职场文书
公司行政主管岗位职责
2015/04/09 职场文书
上诉答辩状范文
2015/05/22 职场文书
大学生社区义工服务心得体会
2016/01/22 职场文书
某某店铺的开业庆典主持词范本
2019/11/25 职场文书
深入理解python多线程编程
2021/04/18 Python
python异常中else的实例用法
2021/06/15 Python