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简单封装了一些常用JS操作
Feb 25 PHP
快速开发一个PHP扩展图文教程
Dec 12 PHP
PHP获取文件后缀名的三个函数
Oct 15 PHP
Codeigniter上传图片出现“You did not select a file to upload”错误解决办法
Jun 12 PHP
PHP数组遍历知识汇总(包含遍历方法、数组指针操作函数、数组遍历测速)
Jul 05 PHP
WebQQ最新登陆协议的用法
Dec 22 PHP
php创建、获取cookie及基础要点分析
Jan 26 PHP
PHP中is_file()函数使用指南
May 08 PHP
php提高网站效率的技巧
Sep 29 PHP
简单理解PHP的面向对象编程方式
May 17 PHP
PHP实现的回溯算法示例
Aug 15 PHP
Laravel框架实现的记录SQL日志功能示例
Jun 19 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 动态多文件上传
2009/01/18 PHP
PHP获取用户的浏览器与操作系统信息的代码
2012/09/04 PHP
PHP实现微信网页授权开发教程
2016/01/19 PHP
解析PHP之提取多维数组指定列的方法
2017/01/03 PHP
PHP实现提取多维数组指定一列的方法总结
2019/12/04 PHP
PHP数组Key强制类型转换实现原理解析
2020/09/01 PHP
Javascript(AJAX)解析XML的代码(兼容FIREFOX/IE)
2010/07/11 Javascript
javascript中的window.location.search方法简介
2013/09/02 Javascript
jquery控制页面部分刷新的方法
2015/06/24 Javascript
JS设置cookie、读取cookie
2016/02/24 Javascript
bootstrap weebox 支持ajax的模态弹出框
2017/02/23 Javascript
jQuery实现导航回弹效果
2017/02/27 Javascript
vue中mint-ui环境搭建详细介绍
2017/04/06 Javascript
VUE前端cookie简单操作
2017/10/17 Javascript
vue刷新页面时去闪烁提升用户体验效果的实现方法
2018/12/10 Javascript
JS数组求和的常用方法实例小结
2019/01/07 Javascript
vue项目前端错误收集之sentry教程详解
2019/05/27 Javascript
vue实现点击按钮切换背景颜色的示例代码
2020/06/23 Javascript
[01:00:53]OG vs IG 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python os模块中的isfile()和isdir()函数均返回false问题解决方法
2015/02/04 Python
python获取文件扩展名的方法
2015/07/06 Python
python通过文件头判断文件类型
2015/10/30 Python
python3利用venv配置虚拟环境及过程中的小问题小结
2018/08/01 Python
Django 路由控制的实现代码
2018/11/08 Python
Python matplotlib的使用并自定义colormap的方法
2018/12/13 Python
Python匿名函数及应用示例
2019/04/09 Python
python爬虫 爬取超清壁纸代码实例
2019/08/16 Python
Django admin.py 在修改/添加表单界面显示额外字段的方法
2019/08/22 Python
Pytorch中Tensor与各种图像格式的相互转化详解
2019/12/26 Python
Python如何基于smtplib发不同格式的邮件
2019/12/30 Python
Pytorch 数据加载与数据预处理方式
2019/12/31 Python
基于Django快速集成Echarts代码示例
2020/12/01 Python
美国婴儿和儿童服装购物网站:PatPat
2020/10/01 全球购物
关于Java finally的面试题
2016/04/27 面试题
经济与贸易专业应届生求职信
2013/11/19 职场文书
2015年度村委会工作总结
2015/04/29 职场文书