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
Jun 29 PHP
php实现的CSS更新类实例
Sep 22 PHP
ThinkPHP模板之变量输出、自定义函数与判断语句用法
Nov 01 PHP
php利用反射实现插件机制的方法
Mar 14 PHP
PHP易混淆知识整理笔记
Sep 24 PHP
2款PHP无限级分类实例代码
Nov 11 PHP
PHP基于yii框架实现生成ICO图标
Nov 13 PHP
php使用PDO从数据库表中读取数据的实现方法(必看)
Jun 02 PHP
PHP实现重载的常用方法实例详解
Oct 18 PHP
PHP缓存工具XCache安装与使用方法详解
Apr 09 PHP
Yii框架常见缓存应用实例小结
Sep 09 PHP
PHP7 字符串处理机制修改
Mar 09 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学习资料汇总与网址
2007/03/16 PHP
php 中的str_replace 函数总结
2007/04/27 PHP
PHP自带函数给数字或字符串自动补齐位数
2014/07/29 PHP
laravel-admin 管理平台获取当前登陆用户信息的例子
2019/10/08 PHP
控制打印时页眉角的代码
2007/02/08 Javascript
jsTree 基于JQuery的排序节点 Bug
2011/07/26 Javascript
删除select中所有option选项jquery代码
2013/08/12 Javascript
jQuery中.live()方法的用法深入解析
2013/12/30 Javascript
javascript 终止函数执行操作
2014/02/14 Javascript
JavaScript使用循环和分割来替换和删除元素实例
2014/10/13 Javascript
学习JavaScript设计模式之享元模式
2016/01/18 Javascript
node安装--linux下的快速安装教程
2017/03/21 Javascript
js利用for in循环获取 一个对象的所有属性以及值的实例
2017/03/30 Javascript
JavaScript数据结构之双向链表和双向循环链表的实现
2017/11/28 Javascript
JavaScript的词法结构精华篇
2018/10/17 Javascript
解决Can't find variable: SockJS vue项目的问题
2020/09/22 Javascript
Python中import机制详解
2017/11/14 Python
PyQt5打开文件对话框QFileDialog实例代码
2018/02/07 Python
Python实现App自动签到领取积分功能
2018/09/29 Python
Linux下Pycharm、Anaconda环境配置及使用踩坑
2018/12/19 Python
从0开始的Python学习014面向对象编程(推荐)
2019/04/02 Python
解决在keras中使用model.save()函数保存模型失败的问题
2020/05/21 Python
python 实现表情识别
2020/11/21 Python
关于webview适配H5上传照片或者视频文件的方法
2020/11/04 HTML / CSS
怀旧收藏品和经典纪念品:Betty’s Attic
2018/08/29 全球购物
西班牙著名的珠宝首饰品牌:P D PAOLA
2018/09/15 全球购物
Hawes & Curtis官网:英国经典品牌
2019/07/27 全球购物
销售人员自我评价怎么写
2013/09/19 职场文书
师范大学音乐表演专业求职信
2013/10/23 职场文书
2015年挂职干部工作总结
2015/05/14 职场文书
2015年教学管理工作总结
2015/05/20 职场文书
运动会200米广播稿
2015/08/19 职场文书
2016新教师岗前培训心得体会
2016/01/08 职场文书
2016年区委书记抓基层党建工作公开承诺书
2016/03/25 职场文书
六一儿童节致辞稿(3篇)
2019/07/11 职场文书
详解CSS中的特指度和层叠问题
2021/07/15 HTML / CSS