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新手上路(十一)
Oct 09 PHP
新手学PHP之数据库操作详解及乱码解决!
Jan 02 PHP
PHP如何抛出异常处理错误
Mar 02 PHP
PHP文件锁定写入实例解析
Jul 14 PHP
Sublime里直接运行PHP配置方法
Nov 28 PHP
实例讲解如何在PHP的Yii框架中进行错误和异常处理
Mar 17 PHP
CI框架整合smarty步骤详解
May 19 PHP
php函数传值的引用传递注意事项分析
Jun 25 PHP
Laravel框架学习笔记之批量更新数据功能
May 30 PHP
php实现 master-worker 守护多进程模式的实例代码
Jul 20 PHP
PHP执行linux命令6个函数代码实例
Nov 24 PHP
关于PhpStorm设置点击编辑文件自动定位源文件的实现方式
Dec 30 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
PHP使用SOAP扩展实现WebService的方法
2016/04/01 PHP
php给数组赋值的实例方法
2019/09/26 PHP
PHP 对象接口简单实现方法示例
2020/04/13 PHP
php将字符串转换为数组实例讲解
2020/05/05 PHP
JS弹出对话框返回值代码(asp.net后台)
2010/12/28 Javascript
使用滤镜设置透明导致 IE 6/7/8/9 解析异常的解决方法
2011/04/07 Javascript
Js数组的操作push,pop,shift,unshift等方法详细介绍
2012/12/28 Javascript
js综合应用实例简单的表格统计
2013/09/03 Javascript
使用AmplifyJS组件配合JavaScript进行编程的指南
2015/07/28 Javascript
AngularJS出现$http异步后台无法获取请求参数问题的解决方法
2016/11/03 Javascript
npm国内镜像 安装失败的几种解决方案
2017/06/04 Javascript
浅谈Vue响应式(数组变异方法)
2018/05/07 Javascript
vue单页开发父子组件传值思路详解
2018/05/18 Javascript
JS实现将二维数组转为json格式字符串操作示例
2018/07/12 Javascript
JS数组splice操作实例分析
2019/10/12 Javascript
Vue路由 重定向和别名的区别说明
2020/09/09 Javascript
详解vue之自行实现派发与广播(dispatch与broadcast)
2021/01/19 Vue.js
通过滑动翻页效果实现和移动端click事件问题
2021/01/26 Javascript
python编写爬虫小程序
2015/05/14 Python
Python基础教程之正则表达式基本语法以及re模块
2016/03/25 Python
python3实现域名查询和whois查询功能
2018/06/21 Python
python梯度下降法的简单示例
2018/08/31 Python
Python新手学习标准库模块命名
2020/05/29 Python
使用Dajngo 通过代码添加xadmin用户和权限(组)
2020/07/03 Python
HTML5+CSS3 诱人的实例:3D立方体旋转动画实例
2016/12/30 HTML / CSS
美国Lolё官网:购买大胆而美丽的女性运动服装
2017/05/22 全球购物
美赞臣新加坡官方旗舰店:Enfagrow新加坡
2019/05/15 全球购物
Java中的异常处理机制的简单原理和应用
2013/04/27 面试题
生物技术专业研究生自荐信
2013/09/22 职场文书
文秘大学生求职信
2014/02/25 职场文书
2014年安全生产责任书
2014/07/22 职场文书
2016年情人节问候语
2015/11/11 职场文书
爱岗敬业事迹材料
2019/06/20 职场文书
Windows Server 2008 修改远程登录端口以及配置防火墙
2022/04/28 Servers
关于的python五子棋的算法
2022/05/02 Python