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 相关文章推荐
用Zend Encode编写开发PHP程序
Oct 09 PHP
PHP COOKIE设置为浏览器进程
Jun 21 PHP
利用phpexcel把excel导入数据库和数据库导出excel实现
Jan 09 PHP
实现获取http内容的php函数分享
Feb 16 PHP
PHP小技巧之JS和CSS优化工具Minify的使用方法
May 19 PHP
ThinkPHP CURD方法之limit方法详解
Jun 18 PHP
Json_encode防止汉字转义成unicode的方法
Feb 25 PHP
php 多文件上传的实现实例
Oct 23 PHP
yii2中LinkPager增加总页数和总记录数的实例
Aug 28 PHP
支持汉转拼和拼音分词的PHP中文工具类ChineseUtil
Feb 23 PHP
php+layui数据表格实现数据分页渲染代码
Oct 26 PHP
如何在Laravel之外使用illuminate组件详解
Sep 20 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采用curl访问域名返回405 method not allowed提示的解决方法
2014/06/26 PHP
php实现的读取CSV文件函数示例
2017/02/07 PHP
js常用函数 不错
2006/09/08 Javascript
SWFObject Flash js调用类
2008/07/08 Javascript
JavaScript 学习小结(适合新手参考)
2009/07/30 Javascript
基于jquery的仿百度搜索框效果代码
2011/04/11 Javascript
Jquery命名冲突解决的五种方案分享
2012/03/16 Javascript
来自国外的30个基于jquery的Web下拉菜单
2012/06/22 Javascript
JS判断页面加载状态以及添加遮罩和缓冲动画的代码
2012/10/11 Javascript
你可能不知道的JavaScript的new Function()方法
2014/04/17 Javascript
Javascript 赋值机制详解
2014/11/23 Javascript
JavaScript实现定时隐藏与显示图片的方法
2015/08/06 Javascript
JavaScript实现同时调用多个函数的方法
2015/11/09 Javascript
JavaScript编程中实现对象封装特性的实例讲解
2016/06/24 Javascript
vue中mint-ui环境搭建详细介绍
2017/04/06 Javascript
JavaScript实现选中文字提示新浪微博分享效果
2017/06/15 Javascript
js使用swiper实现层叠轮播效果实例代码
2018/12/12 Javascript
vue 点击其他区域关闭自定义div操作
2020/07/17 Javascript
JavaScript 防抖和节流遇见的奇怪问题及解决
2020/11/20 Javascript
vue如何使用rem适配
2021/02/06 Vue.js
[49:13]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第一局
2016/02/27 DOTA
[01:05:41]EG vs Optic Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
python类的继承实例详解
2017/03/30 Python
Django如何使用第三方服务发送电子邮件
2019/08/14 Python
详解Django配置优化方法
2019/11/18 Python
纯CSS3制作的简洁蓝白风格的登录模板(非IE效果更好)
2013/08/11 HTML / CSS
html5仿支付宝密码框的实现代码
2017/09/06 HTML / CSS
夏威夷灵感服装及配饰:Reyn Spooner
2018/09/18 全球购物
高中军训广播稿
2014/01/14 职场文书
医院搬迁方案
2014/06/14 职场文书
国际贸易系求职信
2014/08/09 职场文书
国家领导干部党的群众路线教育实践活动批评与自我批评材料
2014/09/23 职场文书
县政府领导班子四风问题对照检查材料思想汇报
2014/09/26 职场文书
2015年度护士个人工作总结
2015/04/09 职场文书
2015年九一八事变纪念活动实施方案
2015/05/06 职场文书
2016秋季幼儿园开学寄语
2015/12/03 职场文书