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中的登陆login
Jan 18 PHP
PHP二维数组的去重问题解析
Jul 17 PHP
PHP filter_var() 函数 Filter 函数
Apr 25 PHP
PHP开发框架kohana中处理ajax请求的例子
Jul 14 PHP
php采集自中央气象台范围覆盖全国的天气预报代码实例
Jan 04 PHP
php curl 上传文件代码实例
Apr 27 PHP
golang与php实现计算两个经纬度之间距离的方法
Jul 22 PHP
php+jQuery递归调用POST循环请求示例
Oct 14 PHP
php操作access数据库的方法详解
Feb 22 PHP
php获取ajax的headers方法与内容实例
Dec 27 PHP
laravel实现Auth认证,登录、注册后的页面回跳方法
Sep 30 PHP
Laravel 已登陆用户再次查看登陆页面的自动跳转设置方法
Sep 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
ThinkPHP表单数据智能写入create方法实例分析
2015/09/27 PHP
PHP+MySQL实现的简单投票系统实例
2016/02/24 PHP
Laravel接收前端ajax传来的数据的实例代码
2017/07/20 PHP
laravel实现批量更新多条记录的方法示例
2017/10/22 PHP
JS获取select的value和text值的简单实例
2014/02/26 Javascript
node.js中的fs.realpath方法使用说明
2014/12/16 Javascript
ECMAScript 5严格模式(Strict Mode)介绍
2015/03/02 Javascript
jQuery实现的文字hover颜色渐变效果实例
2016/02/20 Javascript
JQuery导航菜单选择特效
2016/04/11 Javascript
jQuery自定义图片缩放拖拽插件imageQ实现方法(附demo源码下载)
2016/05/27 Javascript
Angularjs根据json文件动态生成路由状态的实现方法
2017/04/17 Javascript
jquery ajax异步提交表单数据的方法
2017/10/27 jQuery
JS基于递归实现网页版计算器的方法分析
2017/12/20 Javascript
jQuery基于闭包实现的显示与隐藏div功能示例
2018/06/09 jQuery
vue.js input框之间赋值方法
2018/08/24 Javascript
javascript实现计算指定范围内的质数示例
2018/12/29 Javascript
基于Vue插入视频的2种方法小结
2019/04/02 Javascript
vue实现移动端图片上传功能
2019/12/23 Javascript
基于javascript处理二进制图片流过程详解
2020/06/08 Javascript
Python实现快速排序和插入排序算法及自定义排序的示例
2016/02/16 Python
对pytorch网络层结构的数组化详解
2018/12/08 Python
python运行时强制刷新缓冲区的方法
2019/01/14 Python
对Pycharm创建py文件时自定义头部模板的方法详解
2019/02/12 Python
详解Python匿名函数(lambda函数)
2019/04/19 Python
利用Python进行图像的加法,图像混合(附代码)
2019/07/14 Python
使用Python刷淘宝喵币(低阶入门版)
2019/10/30 Python
使用Python实现批量ping操作方法
2020/05/06 Python
python 邮件检测工具mmpi的使用
2021/01/04 Python
基于Python的接口自动化读写excel文件的方法
2021/01/15 Python
一款超酷的js+css3实现的3D标签云特效兼容ie7/8/9
2013/11/18 HTML / CSS
Talbots官网:美国成熟女装品牌
2019/11/15 全球购物
农林经济管理专业自荐信
2014/09/01 职场文书
办公楼租房协议书范本
2014/11/25 职场文书
2015新年寄语大全
2014/12/08 职场文书
小学秋季运动会通讯稿
2015/11/25 职场文书
使用Redis实现秒杀功能的简单方法
2021/05/08 Redis