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 相关文章推荐
一个odbc连mssql分页的类
Oct 09 PHP
用PHP制作的意见反馈表源码
Mar 11 PHP
关于Intype一些小问题的解决办法
Mar 28 PHP
PHP 导出数据到淘宝助手CSV的方法分享
Feb 27 PHP
php 中英文语言转换类
Sep 07 PHP
PHP反转字符串函数strrev()函数的用法
Feb 04 PHP
Linux下安装oracle客户端并配置php5.3
Oct 12 PHP
laravel5创建service provider和facade的方法详解
Jul 26 PHP
PHP的mysqli_stat()函数讲解
Jan 23 PHP
ThinkPHP框架实现FTP图片上传功能示例
Apr 08 PHP
实现laravel 插入操作日志到数据库的方法
Oct 11 PHP
php设计模式之观察者模式实例详解【星际争霸游戏案例】
Mar 30 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
shopex中集成的站长统计功能的代码简单分析
2011/08/11 PHP
PhpStorm连接服务器并实现自动上传功能
2020/12/09 PHP
javascript 函数调用规则
2009/08/26 Javascript
jQuery控制图片的hover效果(smartRollover.js)
2012/03/18 Javascript
js中substr,substring,indexOf,lastIndexOf的用法小结
2013/12/27 Javascript
JavaScript中的null和undefined区别介绍
2015/01/01 Javascript
Javascript中的call()方法介绍
2015/03/15 Javascript
通过实例理解javascript中没有函数重载的概念
2015/06/03 Javascript
JavaScript实现设计模式中的单例模式的一些技巧总结
2016/05/17 Javascript
Javascript点击其他任意地方隐藏关闭DIV实例
2016/06/21 Javascript
浅谈JSON.stringify()和JOSN.parse()方法的不同
2016/08/29 Javascript
JavaScript常用代码书写规范的超全面总结
2016/09/11 Javascript
nodejs简单实现操作arduino
2016/09/25 NodeJs
Sequelize中用group by进行分组聚合查询
2016/12/12 Javascript
老生常谈combobox和combotree模糊查询
2017/04/17 Javascript
Angularjs根据json文件动态生成路由状态的实现方法
2017/04/17 Javascript
vue中动态绑定表单元素的属性方法
2018/02/23 Javascript
JS遍历DOM文档树的方法实例详解
2018/04/03 Javascript
如何把vuejs打包出来的文件整合到springboot里
2018/07/26 Javascript
vue 实现LED数字时钟效果(开箱即用)
2019/12/08 Javascript
ES6常用小技巧总结【去重、交换、合并、反转、迭代、计算等】
2019/12/21 Javascript
vue实现虚拟列表功能的代码
2020/07/28 Javascript
python多线程http下载实现示例
2013/12/30 Python
举例讲解Python中字典的合并值相加与异或对比
2016/06/04 Python
Python实现提取XML内容并保存到Excel中的方法
2018/09/01 Python
python控制台实现tab补全和清屏的例子
2019/08/20 Python
解决tensorflow训练时内存持续增加并占满的问题
2020/01/19 Python
pycharm 使用tab跳出正在编辑的括号(){}{}等问题
2021/02/26 Python
针对HTML5的Web Worker使用攻略
2015/07/12 HTML / CSS
WoolOvers澳洲官方网站:英国针织服装公司
2018/05/13 全球购物
EGO Shoes美国/加拿大:英国时髦鞋类品牌
2018/08/04 全球购物
应届生财务会计求职信
2013/11/05 职场文书
单位成立周年感言
2014/01/26 职场文书
幼儿园教学管理制度
2014/02/04 职场文书
工程师岗位职责规定
2014/02/26 职场文书
护理医院见习报告
2014/11/03 职场文书