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经典的给图片加水印程序
Dec 06 PHP
php 动态多文件上传
Jan 18 PHP
php入门教程 精简版
Dec 13 PHP
检查url链接是否已经有参数的php代码 添加 ? 或 &
Feb 09 PHP
php安全开发 添加随机字符串验证,防止伪造跨站请求
Feb 14 PHP
php setcookie函数的参数说明及其用法
Apr 20 PHP
php数组合并与拆分实例分析
Jun 12 PHP
YII中Ueditor富文本编辑器文件和图片上传的配置图文教程
Mar 15 PHP
php 判断页面或图片是否经过gzip压缩的方法
Apr 05 PHP
PHP基于自增数据如何生成不重复的随机数示例
May 19 PHP
PHP数据库操作三:redis用法分析
Aug 16 PHP
laravel 框架结合关联查询 when()用法分析
Nov 22 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
ip签名探针
2006/10/09 PHP
ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单
2014/05/15 PHP
javascript EXCEL 操作类代码
2009/07/30 Javascript
jQuery新闻滚动插件 jquery.roller.js
2011/06/27 Javascript
js function定义函数的几种不错方法
2014/02/27 Javascript
JavaScript制作简易计算器(不用eval)
2017/02/05 Javascript
windows下vue.js开发环境搭建教程
2017/03/20 Javascript
JavaScript函数柯里化原理与用法分析
2017/03/31 Javascript
Angular.js中上传指令ng-upload的基本使用教程
2017/07/30 Javascript
webpack+vue2构建vue项目骨架的方法
2018/01/09 Javascript
vue基于element的区间选择组件
2018/09/07 Javascript
webpack4实现不同的导出类型
2019/04/09 Javascript
实现一个Vue自定义指令懒加载的方法示例
2020/06/04 Javascript
深入解析微信小程序开发中遇到的几个小问题
2020/07/11 Javascript
详解在IDEA中将Echarts引入web两种方式(使用js文件和maven的依赖导入)
2020/07/11 Javascript
原生JavaScript实现弹幕组件的示例代码
2020/10/12 Javascript
[01:11]steam端dota2实名认证操作流程视频
2021/03/11 DOTA
Python获取Linux系统下的本机IP地址代码分享
2014/11/07 Python
详尽讲述用Python的Django框架测试驱动开发的教程
2015/04/22 Python
Python编程中实现迭代器的一些技巧小结
2016/06/21 Python
Python使用PDFMiner解析PDF代码实例
2017/03/27 Python
Python 25行代码实现的RSA算法详解
2018/04/10 Python
详解Python 多线程 Timer定时器/延迟执行、Event事件
2019/06/27 Python
Python qqbot 实现qq机器人的示例代码
2019/07/11 Python
Prometheus开发中间件Exporter过程详解
2020/11/30 Python
如何理解transaction事务的概念
2015/05/27 面试题
超市开店计划书
2014/09/15 职场文书
2014年纪检部工作总结
2014/11/12 职场文书
离退休人员聘用协议书
2014/11/24 职场文书
七年级地理教学计划
2015/01/22 职场文书
公司庆典欢迎词
2015/01/26 职场文书
品德与社会教学反思
2016/02/24 职场文书
简历自我评价:教师师德表现自我评价
2019/04/24 职场文书
2019年暑期法院实习报告
2019/12/18 职场文书
SQLServer RANK() 排名函数的使用
2022/03/23 SQL Server
JS实现刷新网页后之前浏览位置保持不变示例详解
2022/08/14 Javascript