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&java(三)
Oct 09 PHP
php str_pad 函数使用详解
Jan 13 PHP
shopex主机报错误请求解决方案(No such file or directory)
Dec 27 PHP
php FLEA中二叉树数组的遍历输出
Sep 26 PHP
wamp下修改mysql访问密码的解决方法
May 07 PHP
解析PHP跳出循环的方法以及continue、break、exit的区别介绍
Jul 01 PHP
PHP中的命名空间详细介绍
Jul 02 PHP
PHP Curl模拟登录微信公众平台、新浪微博实例代码
Jan 28 PHP
php  单例模式详细介绍及实现源码
Nov 05 PHP
Zend Framework入门教程之Zend_Registry组件用法详解
Dec 09 PHP
thinkPHP5框架闭包函数与子查询传参用法示例
Aug 02 PHP
PHP实现一个限制实例化次数的类示例
Sep 16 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
对于ThinkPHP框架早期版本的一个SQL注入漏洞详细分析
2014/07/04 PHP
AJAX的使用方法详解
2017/04/29 PHP
php检测mysql表是否存在的方法小结
2017/07/20 PHP
利用PHP判断是手机移动端还是PC端访问的函数示例
2017/12/14 PHP
php实现QQ小程序发送模板消息功能
2019/09/18 PHP
浅谈laravel-admin form中的数据,在提交后,保存前,获取并进行编辑
2019/10/21 PHP
PHP xpath提取网页数据内容代码解析
2020/07/16 PHP
document.compatMode的CSS1compat使用介绍
2014/04/03 Javascript
jQuery实现ctrl+enter(回车)提交表单
2015/10/19 Javascript
JavaScript实现标题栏文字轮播效果代码
2015/10/24 Javascript
JavaScript中Window对象的属性及事件
2015/12/25 Javascript
在Mac OS上安装使用Node.js的项目自动化构建工具Gulp
2016/06/18 Javascript
基于JavaScript实现添加到购物车效果附源码下载
2016/08/22 Javascript
js对字符串进行编码的方法总结(推荐)
2016/11/10 Javascript
微信小程序 label 组件详解及简单实例
2017/01/10 Javascript
详解js的异步编程技术的方法
2017/02/09 Javascript
jQuery+ThinkPHP+Ajax实现即时消息提醒功能实例代码
2017/03/21 jQuery
javascript实现最长公共子序列实例代码
2018/02/05 Javascript
vue中使用极验验证码的方法(附demo)
2019/12/04 Javascript
Vue在H5 项目中使用融云进行实时个人单聊通讯
2020/12/14 Vue.js
Python配置文件解析模块ConfigParser使用实例
2015/04/13 Python
Windows系统下使用flup搭建Nginx和Python环境的方法
2015/12/25 Python
浅谈python for循环的巧妙运用(迭代、列表生成式)
2017/09/26 Python
Python对Tornado请求与响应的数据处理
2020/02/12 Python
Python用5行代码实现批量抠图的示例代码
2020/04/14 Python
PyTorch的torch.cat用法
2020/06/28 Python
django 装饰器 检测登录状态操作
2020/07/02 Python
推荐值得学习的12款python-web开发框架
2020/08/10 Python
自我鉴定书范文
2013/10/02 职场文书
竞选班干部演讲稿300字
2014/08/20 职场文书
门卫管理制度范本
2015/08/05 职场文书
考试后的感想
2015/08/07 职场文书
保护环境建议书作文300字
2015/09/14 职场文书
详解Vue的sync修饰符
2021/05/15 Vue.js
你喜欢篮球吗?Python实现篮球游戏
2021/06/11 Python
python_tkinter弹出对话框创建
2022/03/20 Python