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
THINKPHP+JS实现缩放图片式截图的实现
Mar 07 PHP
php中0,null,empty,空,false,字符串关系的详细介绍
Jun 20 PHP
PHP数据库操作之基于Mysqli的数据库操作类库
Apr 19 PHP
PHP基于imap获取邮件实例
Nov 11 PHP
php实现在服务器上创建目录的方法
Mar 16 PHP
curl和libcurl的区别简介
Jul 01 PHP
php析构函数的简单使用说明
Aug 24 PHP
Symfony2获取web目录绝对路径、相对路径、网址的方法
Nov 14 PHP
Thinkphp框架 表单自动验证登录注册 ajax自动验证登录注册
Dec 27 PHP
PHP 7安装调试工具Xdebug扩展的方法教程
Jun 17 PHP
详解Laravel服务容器的优势
May 29 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 获取完整url地址
2008/12/20 PHP
PHP执行Curl时报错提示CURL ERROR: Recv failure: Connection reset by peer的解决方法
2014/06/26 PHP
基于jQuery的公告无限循环滚动实现代码
2012/05/11 Javascript
javascript相等运算符与等同运算符详细介绍
2013/11/09 Javascript
js如何设置在iframe框架中指定div不显示
2013/12/04 Javascript
js实现横向百叶窗效果网页切换动画效果的方法
2015/03/02 Javascript
JavaScript操作HTML元素和样式的方法详解
2015/10/21 Javascript
MVC+jQuery.Ajax异步实现增删改查和分页
2020/12/22 Javascript
js基于cookie记录来宾姓名的方法
2016/07/19 Javascript
jQuery实现简洁的轮播图效果实例
2016/09/07 Javascript
AngularJS入门教程之多视图切换用法示例
2016/11/02 Javascript
React中ES5与ES6写法的区别总结
2017/04/21 Javascript
js实现会跳动的日历效果(完整实例)
2017/10/18 Javascript
react以create-react-app为基础创建项目
2018/03/14 Javascript
浅谈Vue3.0新版API之composition-api入坑指南
2020/04/30 Javascript
react结合bootstrap实现评论功能
2020/05/30 Javascript
[40:05]DOTA2上海特级锦标赛A组小组赛#1 EHOME VS MVP.Phx第一局
2016/02/25 DOTA
python判断字符串编码的简单实现方法(使用chardet)
2016/07/01 Python
Python利用operator模块实现对象的多级排序详解
2017/05/09 Python
django定期执行任务(实例讲解)
2017/11/03 Python
Python 根据数据模板创建shapefile的实现
2019/11/26 Python
Python操作多维数组输出和矩阵运算示例
2019/11/28 Python
HTML5+CSS3 实现灵动的动画 TAB 切换效果(DEMO)
2017/09/15 HTML / CSS
CSS3实现彩色进度条动画的示例
2020/10/29 HTML / CSS
HTML5 canvas画图并保存成图片的jcanvas插件
2014/01/17 HTML / CSS
智能电子秤、手表和健康监测仪:Withings(之前为诺基亚健康)
2018/10/30 全球购物
Yahoo-PHP面试题1
2016/07/20 面试题
品恩科技软件测试面试题
2014/10/26 面试题
幼儿教师培训感言
2014/03/08 职场文书
毕业生工作求职信
2014/06/30 职场文书
电子专业自荐信
2014/07/01 职场文书
房地产端午节活动方案
2014/08/24 职场文书
培训感想范文
2015/08/07 职场文书
浅谈JS的原型和原型链
2021/06/04 Javascript
Python爬虫中urllib3与urllib的区别是什么
2021/07/21 Python
使用RedisTemplat实现简单的分布式锁
2021/11/20 Redis