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+AJAX实现无刷新注册(带用户名实时检测)
Jan 02 PHP
php不用内置函数对数组排序的两个算法代码
Feb 08 PHP
PHP手机号码归属地查询代码(API接口/mysql)
Sep 04 PHP
php对二维数组进行排序的简单实例
Dec 19 PHP
实现PHP多线程异步请求的3种方法
Jan 17 PHP
php可扩展的验证类实例(可对邮件、手机号、URL等验证)
Jul 09 PHP
完美解决phpdoc导出文档中@package的warning及Error的错误
May 17 PHP
PHP GD库相关图像生成和处理函数小结
Sep 30 PHP
php微信公众号开发(4)php实现自定义关键字回复
Dec 15 PHP
Yii2设置默认控制器的两种方法
May 19 PHP
PHP实现Huffman编码/解码的示例代码
Apr 20 PHP
Yii2框架数据验证操作实例详解
May 02 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输出当前进程所有变量/常量/模块/函数/类的示例
2013/11/07 PHP
php下载excel无法打开的解决方法
2013/12/24 PHP
php实现cc攻击防御和防止快速刷新页面示例
2014/02/13 PHP
phpExcel中文帮助手册之常用功能指南
2014/08/18 PHP
PHP7.1实现的AES与RSA加密操作示例
2018/06/15 PHP
php根据命令行参数生成配置文件详解
2019/03/15 PHP
基于jquery的分页控件(C#)
2011/01/06 Javascript
原生js写的放大镜效果
2012/08/22 Javascript
JS在IE下缺少标识符的错误
2014/07/23 Javascript
PHP+MySQL+jQuery随意拖动层并即时保存拖动位置实例讲解
2015/10/09 Javascript
过期软件破解办法实例详解
2017/01/04 Javascript
利用vue + koa2 + mockjs模拟数据的方法教程
2017/11/22 Javascript
Angular6中使用Swiper的方法示例
2018/07/09 Javascript
微信小程序实现的图片保存功能示例
2019/04/24 Javascript
cordova+vue+webapp使用html5获取地理位置的方法
2019/07/06 Javascript
解决mui框架中switch开关通过js控制开或者关状态时小圆点不动的问题
2019/09/03 Javascript
Layer UI表格列日期格式化及取消自动填充日期的实现方法
2020/05/10 Javascript
[01:08:24]DOTA2-DPC中国联赛 正赛 RNG vs Phoenix BO3 第一场 2月5日
2021/03/11 DOTA
Python and、or以及and-or语法总结
2015/04/14 Python
Python中str is not callable问题详解及解决办法
2017/02/10 Python
numpy中实现ndarray数组返回符合特定条件的索引方法
2018/04/17 Python
python提取图像的名字*.jpg到txt文本的方法
2018/05/10 Python
Python利用sqlacodegen自动生成ORM实体类示例
2019/06/04 Python
Python3 Tkinter选择路径功能的实现方法
2019/06/14 Python
在python中,使用scatter绘制散点图的实例
2019/07/03 Python
Django REST Framework序列化外键获取外键的值方法
2019/07/26 Python
pytorch SENet实现案例
2020/06/24 Python
Python爬虫之Selenium实现键盘事件
2020/12/04 Python
英国家用电器购物网站:Hughes
2018/02/23 全球购物
英国PC组件和在线电脑商店:SCAN
2019/04/18 全球购物
Shell如何接收变量输入
2016/08/06 面试题
90后毕业生的求职信范文
2013/09/21 职场文书
英文请假条
2014/04/11 职场文书
优秀护士事迹材料
2014/12/25 职场文书
公务员爱岗敬业心得体会
2016/01/25 职场文书
Js类的构建与继承案例详解
2021/09/15 Javascript