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代码
Dec 06 PHP
php面向对象全攻略 (十四) php5接口技术
Sep 30 PHP
smarty模板嵌套之include与fetch性能测试
Dec 05 PHP
PHP容易忘记的知识点分享
Apr 30 PHP
php全局变量和类配合使用深刻理解
Jun 05 PHP
解析php取整的几种方式
Jun 25 PHP
php生成随机颜色方法汇总
Dec 03 PHP
php强制用户转向www域名的方法
Jun 19 PHP
PHP实现伪静态方法汇总
Jan 13 PHP
Laravel执行migrate命令提示:No such file or directory的解决方法
Mar 16 PHP
Yii2创建多界面主题(Theme)的方法
Oct 08 PHP
详细对比php中类继承和接口继承
Oct 11 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
php5中类的学习
2008/03/28 PHP
php-accelerator网站加速PHP缓冲的方法
2008/07/30 PHP
php过滤html中的其他网站链接的方法(域名白名单功能)
2014/04/24 PHP
php第一次无法获取cookie问题处理
2014/12/15 PHP
PHP实现上一篇下一篇的方法实例总结
2016/09/22 PHP
php变量与JS变量实现不通过跳转直接交互的方法
2017/08/25 PHP
BOOM vs RR BO5 第四场 2.14
2021/03/10 DOTA
基于jsTree的无限级树JSON数据的转换代码
2010/07/27 Javascript
深入了解Node.js中的一些特性
2014/09/25 Javascript
NodeJS学习笔记之Http模块
2015/01/13 NodeJs
JS实现在页面随时自定义背景颜色的方法
2015/02/27 Javascript
jQuery解决浏览器兼容性问题案例分析
2016/04/15 Javascript
bootstrap手风琴制作方法详解
2017/01/11 Javascript
利用angularjs1.4制作的简易滑动门效果
2017/02/28 Javascript
nodejs前端自动化构建环境的搭建
2017/07/26 NodeJs
Vue实现点击后文字变色切换方法
2018/02/11 Javascript
JS实现的JSON序列化操作简单示例
2018/07/02 Javascript
原生js实现trigger方法示例代码
2019/05/22 Javascript
Vue动态面包屑功能的实现方法
2019/07/01 Javascript
微信小程序自定义弹窗实现详解(可通用)
2019/07/04 Javascript
jquery实现的分页显示功能示例
2019/08/23 jQuery
[03:49]2016完美“圣”典风云人物:AMS专访
2016/12/06 DOTA
[00:15]TI9观赛名额抽取
2019/07/10 DOTA
easy_install python包安装管理工具介绍
2013/02/10 Python
Python实现多进程共享数据的方法分析
2017/12/04 Python
python里dict变成list实例方法
2019/06/26 Python
python 消除 futureWarning问题的解决
2019/12/25 Python
python 生成正态分布数据,并绘图和解析
2020/12/21 Python
德国著名廉价网上药店:Shop-Apotheke
2017/07/23 全球购物
小学语文教研活动总结
2014/07/01 职场文书
辞职书格式样本
2015/02/26 职场文书
农民工工资支付承诺书
2015/05/04 职场文书
2019请假条的基本格式及范文!
2019/07/05 职场文书
大学生,三分钟即兴演讲稿
2019/07/22 职场文书
神州牡丹园的导游词
2019/11/20 职场文书
Jedis操作Redis实现模拟验证码发送功能
2021/09/25 Redis