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 相关文章推荐
生成缩略图
Oct 09 PHP
一道关于php变量引用的面试题
Aug 08 PHP
关于PHP二进制流 逐bit的低位在前算法(详解)
Jun 13 PHP
ThinkPHP CURD方法之table方法详解
Jun 18 PHP
PHP 魔术变量和魔术函数详解
Feb 25 PHP
php.ini中的request_order推荐设置
May 10 PHP
php通过淘宝API查询IP地址归属等信息
Dec 25 PHP
php使用高斯算法实现图片的模糊处理功能示例
Nov 11 PHP
PHP单例模式详解及实例代码
Dec 21 PHP
PHP进程通信基础之信号量与共享内存通信
Feb 19 PHP
thinkPHP5.0框架模块设计详解
Mar 18 PHP
PHP asXML()函数讲解
Feb 03 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
基于mysql的论坛(3)
2006/10/09 PHP
PHP+iFrame实现页面无需刷新的异步文件上传
2014/09/16 PHP
在CentOS上搭建LAMP+vsftpd环境的简单指南
2015/08/01 PHP
php删除二维数组中的重复值方法
2018/03/12 PHP
PHP将英文数字转换为阿拉伯数字实例讲解
2019/01/28 PHP
关于jquery动态增减控件的一些想法和小插件
2010/08/01 Javascript
初始Nodejs
2014/11/08 NodeJs
基于js里调用函数时,函数名带括号和不带括号的区别
2016/07/28 Javascript
js利用clipboardData实现截屏粘贴功能
2016/10/12 Javascript
vue-router跳转页面的方法
2017/02/09 Javascript
node puppeteer(headless chrome)实现网站登录
2018/05/09 Javascript
每天学点Vue源码之vm.$mount挂载函数
2019/03/11 Javascript
Windows上node.js的多版本管理工具用法实例分析
2019/11/06 Javascript
vue 手机物理监听键+退出提示代码
2020/09/09 Javascript
vuecli项目构建SSR服务端渲染的实现
2020/10/30 Javascript
[05:09]第二届DOTA2亚洲邀请赛决赛日比赛集锦:iG 3:0 OG夺冠
2017/04/05 DOTA
python 文件和路径操作函数小结
2009/11/23 Python
python实现调用其他python脚本的方法
2014/10/05 Python
Python远程桌面协议RDPY安装使用介绍
2015/04/15 Python
python开发简易版在线音乐播放器
2017/03/03 Python
Python实现备份MySQL数据库的方法示例
2018/01/11 Python
Python如何抓取天猫商品详细信息及交易记录
2018/02/23 Python
基于Python的ModbusTCP客户端实现详解
2019/07/13 Python
python 命令行传入参数实现解析
2019/08/30 Python
python图形开发GUI库wxpython使用方法详解
2020/02/14 Python
基于Python生成个性二维码过程详解
2020/03/05 Python
实现ECharts双Y轴左右刻度线一致的例子
2020/05/16 Python
使用Keras预训练模型ResNet50进行图像分类方式
2020/05/23 Python
Sperry官网:帆船鞋创始品牌
2016/09/07 全球购物
澳大利亚网上玩具商店:Mr Toys Toyworld
2018/03/25 全球购物
德国香水、化妆品和护理产品网上商店:Parfumdreams
2018/09/26 全球购物
Nisbets法国:英国最大的厨房和餐饮设备供应商
2019/03/18 全球购物
培训心得体会
2013/12/29 职场文书
销售个人求职信范文
2014/04/28 职场文书
2016中秋节月饼促销广告语
2016/01/28 职场文书
Golang数据类型和相互转换
2022/04/12 Golang