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 相关文章推荐
php xml留言板 xml存储数据的简单例子
Aug 24 PHP
php mysql 判断update之后是否更新了的方法
Jan 10 PHP
使用php记录用户通过搜索引擎进网站的关键词
Feb 13 PHP
PHP反射使用实例和PHP反射API的中文说明
Jul 02 PHP
基于PHP的简单采集数据入库程序
Jul 30 PHP
PHP指定截取字符串中的中英文或数字字符的实例分享
Mar 18 PHP
PHP模板引擎Smarty中的保留变量用法分析
Apr 11 PHP
php时间计算相关问题小结
May 09 PHP
用HTML/JS/PHP方式实现页面延时跳转的简单实例
Jul 18 PHP
phpStudy 2016 使用教程详解(支持PHP7)
Oct 18 PHP
Laravel获取所有的数据库表及结构的方法
Oct 10 PHP
php7 图形用户界面GUI 开发示例
Feb 22 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
PHP基于方差和标准差计算学生成绩的稳定性示例
2017/07/04 PHP
JavaScript 错误处理与调试经验总结
2010/08/10 Javascript
通过jQuery源码学习javascript(二)
2012/12/27 Javascript
js 用CreateElement动态创建标签示例
2013/11/20 Javascript
jquery检测input checked 控件是否被选中的方法
2014/03/26 Javascript
javascript设计模式之中介者模式Mediator
2014/12/30 Javascript
JavaScript实现瀑布流布局
2020/06/28 Javascript
最佳的JavaScript错误处理实践
2016/07/16 Javascript
jQuery实现的简单悬浮层功能完整实例
2017/01/23 Javascript
微信小程序中的swiper组件详解
2017/04/14 Javascript
vue.js声明式渲染和条件与循环基础知识
2017/07/31 Javascript
10个经典的网页鼠标特效代码
2018/01/09 Javascript
详解vue移动端日期选择组件
2018/02/22 Javascript
微信小程序 扭蛋抽奖机css3动画实现详解
2019/07/19 Javascript
微信小程序使用npm包的方法步骤
2019/08/13 Javascript
js利用iframe实现选项卡效果
2020/08/09 Javascript
python使用在线API查询IP对应的地理位置信息实例
2014/06/01 Python
解读Python中degrees()方法的使用
2015/05/18 Python
详解Python在七牛云平台的应用(一)
2017/12/05 Python
Python爬虫实例_利用百度地图API批量获取城市所有的POI点
2018/01/10 Python
Python 数据处理库 pandas 入门教程基本操作
2018/04/19 Python
浅谈python requests 的put, post 请求参数的问题
2019/01/02 Python
Python魔法方法详解
2019/02/13 Python
Django 框架模型操作入门教程
2019/11/05 Python
使用Python绘制台风轨迹图的示例代码
2020/09/21 Python
华为菲律宾官方网站:HUAWEI Philippines
2021/02/23 全球购物
同步和异步有何异同,在什么情况下分别使用他们?
2012/12/28 面试题
大学生毕业自我评价范文分享
2013/11/11 职场文书
总经理助理工作职责
2014/02/06 职场文书
机关单位人员学雷锋心得体会
2014/03/10 职场文书
道歉信范文
2015/05/12 职场文书
2015年基层党支部工作总结
2015/05/21 职场文书
2015年英语教学工作总结
2015/05/25 职场文书
Html分层的box-shadow效果的示例代码
2021/03/30 HTML / CSS
nginx里的rewrite跳转的实现
2021/03/31 Servers
Python matplotlib绘制条形统计图 处理多个实验多组观测值
2022/04/21 Python