PHP表单提交后引号前自动加反斜杠的原因及三种办法关闭php魔术引号


Posted in PHP onSeptember 30, 2015

最近发现做一个php程序表单数据提交写入数据库的内容中只要是带有单引号或者双引号的内容时,后面都会增加一个反斜杠。而且每保存一次增加一个反斜杠,很是郁闷。

于是从网上搜了一下原来是PHP程序为了防止注入或者溢出,通过PHP 指令 magic_quotes_gpc自动在双引号、单引号、反斜杠、NULL前面添加反斜杠。

默认PHP 指令 magic_quotes_gpc是on的,也就是打开的。这时候就可以用stripslashes() 函数删除自动添加的反斜杠。用法就是:比如包含字符串的变量是$str,那么就用stripslashes() 函数处理一下这个字符串:stripslashes($str),输出的结果就是去掉反斜杠的。

于是我就把读取的字符串内容用stripslashes()函数处理一下,即$value=stripslashes($str),再保存。

但是又出现另外一个问题,那就是因为本地PHP 指令 magic_quotes_gpc是off的,如果用这个函数的话,就会把本来正常的反斜杠也去掉了。这样就不是我们所希望的了。

解决办法就是可以使用函数 get_magic_quotes_gpc() 进行检测,如果是打开的状态,那么就去除反斜杠,如果是关闭的状态,则不去除反斜杠。

程序代码如下:

$str=$_POST["str"];//读取str的内容赋值给$str变量
if(get_magic_quotes_gpc())//如果get_magic_quotes_gpc()是打开的
{$str=stripslashes($str);//将字符串进行处理
}

下面介绍三种方法解决这个问题:

方法1:修改PHP配置文件php.ini

这种方法只适于自己有权管理服务器的情况下,如果用的虚拟空间,那就只能采用后两条方法。

在PHP配置文件php.ini中将magic_quotes_gpc、magic_quotes_runtime、magic_quotes_sybase全部设为off。如下所示:

  magic_quotes_gpc = Off
  
  magic_quotes_runtime = Off
  
  magic_quotes_sybase = Off

方法2:利用.htaccess文件

该方法只在服务器支持htaccess的情况下,现在的服务器一般都会支持的

在程序目录下.htaccess文件中增加下面一句:

 php_flag magic_quotes_gpc Off

方法3: 在代码中屏蔽

该方法是移植性最强的,不用考虑服务器的配置,只要支持PHP就可以使用。

在所有PHP文件开始处增加下面代码

if(get_magic_quotes_gpc()){
   function stripslashes_deep($value){
     $value=is_array($value)?array_map('stripslashes_deep',$value):stripslashes($value);
     return $value;
   }
   $_POST=array_map('stripslashes_deep',$_POST);
   $_GET=array_map('stripslashes_deep',$_GET);
   $_COOKIE=array_map('stripslashes_deep',$_COOKIE);
   $_REQUEST=array_map('stripslashes_deep',$_REQUEST);
 }

以上介绍就是本文给大家介绍的PHP表单提交后引号前自动加反斜杠的原因及三种办法关闭php魔术引号,希望大家喜欢。

PHP 相关文章推荐
PHP的FTP学习(一)[转自奥索]
Oct 09 PHP
如何从一个php文件向另一个地址post数据,不用表单和隐藏的变量的
Mar 06 PHP
一篇不错的PHP基础学习笔记
Mar 18 PHP
PHP学习之字符串比较和查找
Apr 17 PHP
国外PHP程序员的13个好习惯小结
Feb 20 PHP
深入php函数file_get_contents超时处理的方法详解
Jun 03 PHP
php颜色转换函数hex-rgb(将十六进制格式转成十进制格式)
Sep 23 PHP
PHP基于单例模式实现的数据库操作基类
Jan 15 PHP
PHP简单实现上一页下一页功能示例
Sep 14 PHP
PHP中list方法用法示例
Dec 01 PHP
ThinkPHP中图片按比例切割的代码实例
Mar 08 PHP
php伪静态验证码不显示的解决方案
Sep 26 PHP
Session 失效的原因汇总及解决丢失办法
Sep 30 #PHP
解决php表单重复提交实现方法
Sep 29 #PHP
php正则匹配文章中的远程图片地址并下载图片至本地
Sep 29 #PHP
php猜单词游戏
Sep 29 #PHP
PHP代码优化技巧小结
Sep 29 #PHP
php提取身份证号码中的生日日期以及验证是否为成年人的函数
Sep 29 #PHP
PHP类的封装与继承详解
Sep 29 #PHP
You might like
php实现用手机关闭计算机(电脑)的方法
2015/04/22 PHP
调用WordPress函数统计文章访问量及PHP原生计数器的实现
2016/03/21 PHP
javascript抽象工厂模式详细说明
2014/12/16 Javascript
JS实现适合于后台使用的动画折叠菜单效果
2015/09/21 Javascript
JS实现的文字与图片定时切换效果代码
2015/10/06 Javascript
深入理解React中es6创建组件this的方法
2016/08/29 Javascript
微信小程序  audio音频播放详解及实例
2016/11/02 Javascript
Highcharts+NodeJS搭建数据可视化平台示例
2017/01/01 NodeJs
vue中动态绑定表单元素的属性方法
2018/02/23 Javascript
vue2.0项目实现路由跳转的方法详解
2018/06/21 Javascript
利用chrome浏览器进行js调试并找出元素绑定的点击事件详解
2021/01/30 Javascript
用Fundebug插件记录网络请求异常的方法
2019/02/21 Javascript
jquery添加div实现消息聊天框
2020/02/08 jQuery
vue数据响应式原理知识点总结
2020/02/16 Javascript
vue中后端做Excel导出功能返回数据流前端的处理操作
2020/09/08 Javascript
python计算一个序列的平均值的方法
2015/07/11 Python
Python实现的弹球小游戏示例
2017/08/01 Python
python docx 中文字体设置的操作方法
2018/05/08 Python
全网首秀之Pycharm十大实用技巧(推荐)
2020/04/27 Python
python如何保存文本文件
2020/06/07 Python
pip已经安装好第三方库但pycharm中import时还是标红的解决方案
2020/10/09 Python
捷克移动配件网上商店:ProMobily.cz
2019/03/15 全球购物
Chinti & Parker官网:奢华羊绒女装和创新针织设计
2021/01/01 全球购物
Stokke美国官方网店:高级儿童家具、推车、汽车座椅和配件
2020/06/06 全球购物
亚马逊新加坡官方网站:Amazon.sg
2020/03/25 全球购物
教育学专业实习生的自我鉴定
2013/11/26 职场文书
高校自主招生自荐信
2013/12/09 职场文书
优秀士兵先进事迹
2014/02/06 职场文书
党建示范点实施方案
2014/03/12 职场文书
毕业生就业协议书
2014/04/11 职场文书
《学棋》教后反思
2014/04/14 职场文书
2015年教师自我评价范文
2015/03/04 职场文书
2015年大学辅导员工作总结
2015/05/12 职场文书
网络营销实训总结
2015/08/03 职场文书
CSS3实现的文字弹出特效
2021/04/16 HTML / CSS
Redis中缓存穿透/击穿/雪崩问题和解决方法
2021/12/04 Redis