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 xml 入门学习资料
Jan 01 PHP
sphinx增量索引的一个问题
Jun 14 PHP
php在服务器执行exec命令失败的解决方法
Mar 03 PHP
PHP解析html类库simple_html_dom的转码bug
May 22 PHP
php的mssql数据库连接类实例
Nov 28 PHP
php调用mysql存储过程实例分析
Dec 29 PHP
php输入数据统一类实例
Feb 23 PHP
php查询相似度最高的字符串的方法
Mar 12 PHP
PHP中如何防止外部恶意提交调用ajax接口
Apr 11 PHP
php面向对象值单例模式
May 03 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
Nov 19 PHP
PHP解密支付宝小程序的加密数据、手机号的示例代码
Feb 26 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错误提示failed to open stream: HTTP request failed!的完美解决方法
2011/06/06 PHP
PHP实现异步调用方法研究与分享
2011/10/27 PHP
PHP实现模仿socket请求返回页面的方法
2014/11/04 PHP
php实现模拟登陆方正教务系统抓取课表
2015/05/19 PHP
用javascript实现给出的盒子的序列是否可连为一矩型
2007/08/30 Javascript
javascript 显示当前系统时间代码
2009/12/28 Javascript
学习面向对象之面向对象的术语
2010/11/30 Javascript
getJSON调用后台json数据时函数被调用两次的原因猜想
2013/09/29 Javascript
Js获取数组最大和最小值示例代码
2013/10/29 Javascript
JavaScript常用小技巧小结
2014/12/29 Javascript
JavaScript ES6的新特性使用新方法定义Class
2016/06/28 Javascript
Vuejs第六篇之Vuejs与form元素实例解析
2016/09/05 Javascript
Ajax和Comet技术总结
2017/02/19 Javascript
基于jQuery实现文字打印动态效果
2017/04/21 jQuery
微信小程序实现缓存根据不同的id来进行设置和读取缓存
2017/06/12 Javascript
js登录滑动验证的实现(不滑动无法登陆)
2018/01/03 Javascript
vue select选择框数据变化监听方法
2018/08/24 Javascript
vue.js的vue-cli脚手架中使用百度地图API的实例
2019/01/21 Javascript
基于vue框架手写一个notify插件实现通知功能的方法
2019/03/31 Javascript
vue+elementUI实现表单和图片上传及验证功能示例
2019/05/14 Javascript
微信小程序自定义头部导航栏和导航栏背景图片 navigationStyle问题
2019/07/26 Javascript
Vue中消息横向滚动时setInterval清不掉的问题及解决方法
2019/08/23 Javascript
使用Python编写Linux系统守护进程实例
2015/02/03 Python
Python 实现数据库(SQL)更新脚本的生成方法
2017/07/09 Python
Python下调用Linux的Shell命令的方法
2018/06/12 Python
用xpath获取指定标签下的所有text的实例
2019/01/02 Python
学Python 3的理由和必要性
2019/11/19 Python
Python实现进度条和时间预估的示例代码
2020/06/02 Python
Python Selenium XPath根据文本内容查找元素的方法
2020/12/07 Python
html5使用canvas画一条线
2014/12/15 HTML / CSS
处理HTML5新标签的浏览器兼容版问题
2017/03/13 HTML / CSS
使用canvas压缩图片上传的方法示例
2020/02/07 HTML / CSS
波兰在线香水店:Perfumy.pl
2019/08/12 全球购物
安全教育实施方案
2014/03/02 职场文书
对标管理实施方案
2014/03/12 职场文书
产品销售计划书
2014/05/04 职场文书