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 cache类代码(php数据缓存类)
Apr 15 PHP
php列出一个目录下的所有文件的代码
Oct 09 PHP
QQ互联一键登录审核不通过的解决方案
Sep 10 PHP
Windows下的PHP安装pear教程
Oct 24 PHP
WordPress开发中自定义菜单的相关PHP函数使用简介
Jan 05 PHP
php基于单例模式封装mysql类完整实例
Oct 18 PHP
PHP设置Cookie的HTTPONLY属性方法
Feb 09 PHP
PHP单例模式与工厂模式详解
Aug 29 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
Nov 16 PHP
PHP使用HTML5 FormData对象提交表单操作示例
Jul 02 PHP
php设计模式之工厂模式用法经典实例分析
Sep 20 PHP
PHP大文件分割分片上传实现代码
Dec 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 pack与unpack 摸板字符字符含义
2009/10/29 PHP
YII Framework框架教程之缓存用法详解
2016/03/14 PHP
PHP怎样用正则抓取页面中的网址
2016/08/09 PHP
php使用curl实现ftp文件下载功能
2017/05/16 PHP
js资料prototype 属性
2007/03/13 Javascript
javascript 表单规则集合对象
2009/07/21 Javascript
js输出列表实现代码
2010/09/12 Javascript
js弹出层(jQuery插件形式附带reLoad功能)
2013/04/12 Javascript
9行javascript代码获取QQ群成员具体实现
2013/10/16 Javascript
Javascript实现的简单右键菜单类
2015/09/23 Javascript
jquery编写Tab选项卡滚动导航切换特效
2020/07/17 Javascript
ES6通过babel转码使用webpack使用import关键字
2016/12/13 Javascript
node.js 用socket实现聊天的示例代码
2017/10/17 Javascript
微信小程序实现上传word、txt、Excel、PPT等文件功能
2019/05/23 Javascript
JS实现点餐自动选择框(案例分析)
2019/12/10 Javascript
JS实现数据动态渲染的竖向步骤条
2020/06/24 Javascript
python中查看变量内存地址的方法
2015/05/05 Python
python flask 多对多表查询功能
2017/06/25 Python
python的concat等多种用法详解
2018/11/28 Python
python飞机大战pygame碰撞检测实现方法分析
2019/12/17 Python
keras中模型训练class_weight,sample_weight区别说明
2020/05/23 Python
Python如何给函数库增加日志功能
2020/08/04 Python
python时间time模块处理大全
2020/10/25 Python
Python常用base64 md5 aes des crc32加密解密方法汇总
2020/11/06 Python
python+opencv3.4.0 实现HOG+SVM行人检测的示例代码
2021/01/28 Python
中国综合网上购物商城:苏宁易购
2016/08/09 全球购物
将n个数按输入顺序的逆序排列,用函数实现
2012/11/14 面试题
销售主管竞聘书
2014/03/31 职场文书
求职个人评价范文
2014/04/09 职场文书
贸易跟单员英文求职信
2014/04/19 职场文书
学生会感恩节活动方案
2014/10/11 职场文书
小学同学聚会感言
2015/07/30 职场文书
幼儿园迎新生欢迎词
2015/09/30 职场文书
送给火锅店的创意营销方案!
2019/07/08 职场文书
go 实现简易端口扫描的示例
2021/05/22 Golang
磁贴还没死, 微软Win11可修改注册表找回Win10开始菜单
2021/11/21 数码科技