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和MySql中计算时间差的方法
Apr 22 PHP
PHP使用DES进行加密与解密的方法详解
Jun 06 PHP
php连接Access数据库错误及解决方法
Jun 20 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十六)
Jun 30 PHP
Eclipse的PHP插件PHPEclipse安装和使用
Jul 20 PHP
PHP中读取照片exif信息的方法
Aug 20 PHP
laravel安装和配置教程
Oct 29 PHP
PHP图像裁剪缩略裁切类源码及使用方法
Jan 07 PHP
php基于PDO实现功能强大的MYSQL封装类实例
Feb 27 PHP
php事务回滚简单实现方法示例
Mar 28 PHP
php 删除指定文件夹的实例讲解
Jul 25 PHP
Yii2.0框架实现带分页的多条件搜索功能示例
Feb 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
phpmail类发送邮件函数代码
2012/02/20 PHP
PHP的Yii框架中View视图的使用进阶
2016/03/29 PHP
PHP多进程之pcntl_fork的实例详解
2017/10/15 PHP
Laravel框架实现的rbac权限管理操作示例
2019/01/16 PHP
阻止JavaScript事件冒泡传递(cancelBubble 、stopPropagation)
2007/05/08 Javascript
javascript 复杂的嵌套环境中输出单引号和双引号
2009/05/26 Javascript
ext前台接收action传过来的json数据示例
2014/06/17 Javascript
JavaScript实现数字数组正序排列的方法
2015/04/06 Javascript
JS 作用域与作用域链详解
2015/04/07 Javascript
JavaScript字符串常用的方法
2016/03/10 Javascript
node.js从数据库获取数据
2016/05/08 Javascript
vue项目中用cdn优化的方法
2018/01/03 Javascript
Vue多种方法实现表头和首列固定的示例代码
2018/02/02 Javascript
谈谈我在vue-cli3中用预渲染遇到的坑
2020/04/22 Javascript
[05:13]TI4 中国战队 机场出征!!
2014/07/07 DOTA
[01:20]2018DOTA2亚洲邀请赛总决赛战队LGD晋级之路
2018/04/07 DOTA
Python实现的简单文件传输服务器和客户端
2015/04/08 Python
Python发送以整个文件夹的内容为附件的邮件的教程
2015/05/06 Python
python连接字符串的方法小结
2015/07/13 Python
Python向日志输出中添加上下文信息
2017/05/24 Python
python虚拟环境virtualenv的安装与使用
2017/09/21 Python
Java分治归并排序算法实例详解
2017/12/12 Python
Python自然语言处理 NLTK 库用法入门教程【经典】
2018/06/26 Python
python多任务及返回值的处理方法
2019/01/22 Python
Python企业编码生成系统总体系统设计概述
2019/07/26 Python
Python Django Cookie 简单用法解析
2019/08/13 Python
StubHub哥伦比亚:购买和出售您的门票
2016/10/20 全球购物
IWOOT美国:新奇的小玩意
2018/04/27 全球购物
Tea Collection官网:一家位于旧金山的童装公司
2020/08/07 全球购物
GWebs公司笔试题
2012/05/04 面试题
生产内勤岗位职责
2013/12/07 职场文书
人民调解员培训方案
2014/06/05 职场文书
MySQL命令行操作时的编码问题详解
2021/04/14 MySQL
微信小程序 根据不同用户切换不同TabBar
2022/04/21 Javascript
前端传参数进行Mybatis调用mysql存储过程执行返回值详解
2022/08/14 MySQL
JS实现刷新网页后之前浏览位置保持不变示例详解
2022/08/14 Javascript