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图片上传程序
Mar 27 PHP
用PHP实现递归循环每一个目录
Aug 08 PHP
PHP基础学习之流程控制的实现分析
Apr 28 PHP
IIS安装Apache伪静态插件的具体操作图文
Jul 01 PHP
php结合ACCESS的跨库查询功能
Jun 12 PHP
php中session_id()函数详细介绍,会话id生成过程及session id长度
Sep 23 PHP
php 实现进制相互转换
Apr 07 PHP
php+MySql实现登录系统与输出浏览者信息功能
Jul 01 PHP
PHP提取字符串中的手机号正则表达式怎么写
Jul 17 PHP
PHP 计算两个时间段之间交集的天数示例
Oct 24 PHP
laravel框架学习笔记之组件化开发实现方法
Feb 01 PHP
常见的5个PHP编码小陋习以及优化实例讲解
Feb 27 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
多人战的战术与战略
2020/03/04 星际争霸
PHP检测移动设备类mobile detection使用实例
2014/04/14 PHP
安装ImageMagick出现error while loading shared libraries的解决方法
2014/09/23 PHP
php实现PDO中捕获SQL语句错误的方法
2017/02/16 PHP
Yii框架创建cronjob定时任务的方法分析
2017/05/23 PHP
分析Node.js connect ECONNREFUSED错误
2013/04/09 Javascript
JavaScript获取表格(table)当前行的值、删除行、增加行
2015/07/03 Javascript
深入理解JQuery中的事件与动画
2016/05/18 Javascript
详解JavaScript中的事件流和事件处理程序
2016/05/20 Javascript
详解Node.js中的事件机制
2016/09/22 Javascript
Vue.js中用v-bind绑定class的注意事项
2016/12/13 Javascript
关于ES6的六个小特性(二)
2017/02/20 Javascript
实例分析JS与Node.js中的事件循环
2017/12/12 Javascript
浅谈Vue内置component组件的应用场景
2018/03/27 Javascript
详解webpack 打包文件体积过大解决方案(code splitting)
2018/04/10 Javascript
vue基于element-ui的三级CheckBox复选框功能的实现代码
2018/10/15 Javascript
发布Angular应用至生产环境的方法
2018/12/10 Javascript
linux系统使用python监测系统负载脚本分享
2014/01/15 Python
Python线程详解
2015/06/24 Python
Python生成随机数组的方法小结
2017/04/15 Python
浅谈Django学习migrate和makemigrations的差别
2018/01/18 Python
面向初学者的Python编辑器Mu
2018/10/08 Python
Python基于WordCloud制作词云图
2019/11/29 Python
如何使用selenium和requests组合实现登录页面
2020/02/03 Python
猫途鹰:全球领先的旅游点评社区
2017/04/07 全球购物
Public Desire美国/加拿大:全球性的在线鞋类品牌
2018/12/17 全球购物
衰败城市英国官网:Urban Decay英国
2020/04/29 全球购物
PHP高级工程师面试问题推荐
2013/01/18 面试题
请解释流与文件有什么不同
2016/07/29 面试题
离职感谢信怎么写
2015/01/22 职场文书
工程竣工验收申请报告
2015/05/15 职场文书
2015年保险公司内勤工作总结
2015/05/23 职场文书
感恩教育观后感
2015/06/17 职场文书
(开源)微信小程序+mqtt,esp8266温湿度读取
2021/04/02 Javascript
一文彻底理解js原生语法prototype,__proto__和constructor
2021/10/24 Javascript
分享python函数常见关键字
2022/04/26 Python