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 相关文章推荐
桌面中心(一)创建数据库
Oct 09 PHP
php 带逗号千位符数字的处理方法
Jan 10 PHP
SESSION信息保存在哪个文件目录下以及能够用来保存什么类型的数据
Jun 17 PHP
解析Ubuntu下crontab命令的用法
Jun 24 PHP
php递归使用示例(php递归函数)
Feb 14 PHP
PHP中提问频率最高的11个面试题和答案
Sep 02 PHP
PHP实现图片裁剪、添加水印效果代码
Oct 01 PHP
PHP入门教程之操作符与控制结构流程详解
Sep 09 PHP
CentOS 上搭建 PHP7 开发测试环境
Feb 26 PHP
PHP+MYSQL实现读写分离简单实战
Mar 13 PHP
laravel添加前台跳转成功页面示例
Oct 22 PHP
搭建PhpStorm+PhpStudy开发环境的超详细教程
Sep 17 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 adodb分页实现代码
2009/03/19 PHP
php发送post请求函数分享
2014/03/06 PHP
PHP遍历目录文件的常用方法小结
2017/02/03 PHP
php 删除指定文件夹的实例讲解
2017/07/25 PHP
如何在Web页面上直接打开、编辑、创建Office文档
2007/03/12 Javascript
Stop SQL Server
2007/06/21 Javascript
javascript模拟map输出与去除重复项的方法
2015/02/09 Javascript
基于javascript实现随机颜色变化效果
2016/01/14 Javascript
jQuery实例—选项卡的简单实现(js源码和jQuery)
2016/06/14 Javascript
微信小程序 教程之WXSS
2016/10/18 Javascript
Jquery表单验证失败后不提交的解决方法
2016/10/18 Javascript
javascript深拷贝和浅拷贝详解
2017/02/14 Javascript
Vue制作Todo List网页
2017/04/26 Javascript
浅谈Vue的加载顺序探讨
2017/10/25 Javascript
Vue实现购物车场景下的应用
2017/11/27 Javascript
vue实现表单未编辑或未保存离开弹窗提示功能
2020/04/08 Javascript
python基础教程之对象和类的实际运用
2014/08/29 Python
给Python初学者的一些编程技巧
2015/04/03 Python
Python实例一个类背后发生了什么
2016/02/09 Python
python探索之BaseHTTPServer-实现Web服务器介绍
2017/10/28 Python
Python requests库用法实例详解
2018/08/14 Python
对python pandas 画移动平均线的方法详解
2018/11/28 Python
Django框架下静态模板的继承操作示例
2019/11/08 Python
python实现名片管理器的示例代码
2019/12/17 Python
TripAdvisor瑞典:全球领先的旅游网站
2017/12/11 全球购物
怎么处理XML的中文问题
2015/03/26 面试题
护士自我鉴定怎么写
2014/02/07 职场文书
幼儿园消防演练方案
2014/02/13 职场文书
2014世界杯球队球队口号
2014/06/05 职场文书
法学专业大学生实习自我鉴定
2014/10/05 职场文书
2014年学校党建工作汇报材料
2014/11/02 职场文书
教师群众路线学习心得体会
2014/11/04 职场文书
公司员工安全协议书
2014/11/21 职场文书
2014年学校总务处工作总结
2014/12/08 职场文书
Python爬虫之自动爬取某车之家各车销售数据
2021/06/02 Python
Hive导入csv文件示例
2022/06/25 数据库