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 防恶意刷新实现代码
May 16 PHP
PHP关联数组的10个操作技巧
Jan 21 PHP
利用PHP+JS实现搜索自动提示(实例)
Jun 09 PHP
PHP把网页保存为word文件的三种方法
Apr 01 PHP
php实现获取局域网所有用户的电脑IP和主机名、及mac地址完整实例
Jul 18 PHP
php计算整个mysql数据库大小的方法
Jun 19 PHP
ThinkPHP2.x防范XSS跨站攻击的方法
Sep 25 PHP
php+jQuery+Ajax简单实现页面异步刷新
Aug 08 PHP
php技巧小结【推荐】
Jan 19 PHP
php微信扫码支付 php公众号支付
Mar 24 PHP
PHP7 foreach() 函数修改
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数组函数序列之array_slice() - 在数组中根据条件取出一段值,并返回
2011/11/07 PHP
PHP文件注释标记及规范小结
2012/04/01 PHP
PHP curl伪造IP地址和header信息代码实例
2015/04/27 PHP
Yii中CGridView实现批量删除的方法
2015/12/28 PHP
php传值方式和ajax的验证功能
2017/03/27 PHP
PHP中类与对象功能、用法实例解读
2020/03/27 PHP
写的htc的数据表格
2007/01/20 Javascript
jQuery源码分析之Event事件分析
2010/06/07 Javascript
ExtJS4 组件化编程,动态加载,面向对象,Direct
2011/05/12 Javascript
Express.JS使用详解
2014/07/17 Javascript
jQuery检测返回值的数据类型
2015/07/13 Javascript
jquery 判断selection range 是否在容器中的简单实例
2016/08/02 Javascript
基于bootstrap按钮式下拉菜单组件的搜索建议插件
2017/03/25 Javascript
ES6新数据结构Set与WeakSet用法分析
2017/03/31 Javascript
vue使用中的内存泄漏【推荐】
2018/07/10 Javascript
浅谈开发eslint规则
2018/10/01 Javascript
微信小程序 如何获取网络状态
2019/07/26 Javascript
Bootstrap table 实现树形表格联动选中联动取消功能
2019/09/30 Javascript
解决element-ui的下拉框有值却无法选中的情况
2020/11/07 Javascript
python利用beautifulSoup实现爬虫
2014/09/29 Python
python刷投票的脚本实现代码
2014/11/08 Python
Python数字图像处理之霍夫线变换实现详解
2018/01/12 Python
Python基于OpenCV实现视频的人脸检测
2018/01/23 Python
解决Python计算矩阵乘向量,矩阵乘实数的一些小错误
2019/08/26 Python
python或C++读取指定文件夹下的所有图片
2019/08/31 Python
python GUI库图形界面开发之PyQt5树形结构控件QTreeWidget详细使用方法与实例
2020/03/02 Python
Python OrderedDict字典排序方法详解
2020/05/21 Python
css3的动画特效之动画序列(animation)
2017/12/22 HTML / CSS
日本最新流行服饰网购:Nissen
2016/07/24 全球购物
加拿大在线旅游公司:Flighthub
2019/03/11 全球购物
shell程序中如何注释
2012/01/28 面试题
2014的自我评价
2014/01/13 职场文书
政风行风评议工作总结
2014/10/21 职场文书
详解分布式系统中如何用python实现Paxos
2021/05/18 Python
Python 全局空间和局部空间
2022/04/06 Python
python 判断字符串当中是否包含字符(str.contain)
2022/06/01 Python