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生成随机数或者字符串的代码
Sep 05 PHP
PHP EOT定界符的使用详解
Sep 30 PHP
使用session判断用户登录用户权限(超简单)
Jun 08 PHP
curl不使用文件存取cookie php使用curl获取cookie示例
Jan 26 PHP
PHP捕获Fatal error错误的方法
Jun 11 PHP
两种设置php载入页面时编码的方法
Jul 29 PHP
WordPress中用于获取搜索表单的PHP函数使用解析
Jan 05 PHP
PHP实现文件上传下载实例
Oct 18 PHP
thinkphp实现把数据库中的列的值存到下拉框中的方法
Jan 20 PHP
PHP实现二叉树深度优先遍历(前序、中序、后序)和广度优先遍历(层次)实例详解
Apr 20 PHP
PHP抽象类和接口用法实例详解
Jul 20 PHP
详解PHP服务器如何在有限的资源里最大提升并发能力
May 25 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
AJAX for PHP简单表数据查询实例
2007/01/02 PHP
浅析php学习的路线图
2013/07/10 PHP
帝国cms目录结构分享
2015/07/06 PHP
PHP中strcmp()和strcasecmp()函数字符串比较用法分析
2016/01/07 PHP
PHP从二维数组得到N层分类树的实现代码
2016/10/11 PHP
在Thinkphp中使用ajax实现无刷新分页的方法
2016/10/25 PHP
用javascript实现自定义标签
2007/05/08 Javascript
ExtJS 2.0 GridPanel基本表格简明教程
2010/05/25 Javascript
jQuery之浮动窗口实现代码(两种方法)
2010/09/08 Javascript
js中字符替换函数String.replace()使用技巧
2011/08/14 Javascript
40个新鲜出炉的jQuery 插件和免费教程[上]
2012/07/24 Javascript
javascript学习(二)javascript常见问题总结
2013/01/02 Javascript
angular简介和其特点介绍
2015/01/29 Javascript
jquery中EasyUI使用技巧小结
2015/02/10 Javascript
Javascript简写条件语句(推荐)
2016/06/12 Javascript
vue开发心得和技巧分享
2016/10/27 Javascript
Bootstrap表单制作代码
2017/03/17 Javascript
Bootstrap table使用方法汇总
2017/11/17 Javascript
Node实战之不同环境下配置文件使用教程
2018/01/02 Javascript
Vue slot用法(小结)
2018/10/22 Javascript
微信小程序 弹窗输入组件的实现解析
2019/08/12 Javascript
vue 设置 input 为不可以编辑的实现方法
2019/09/19 Javascript
[49:56]VG vs Optic 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python设计模式之门面模式简单示例
2018/01/09 Python
pandas修改DataFrame列名的实现方法
2019/02/22 Python
Django中URL的参数传递的实现
2019/08/04 Python
jupyter 导入csv文件方式
2020/04/21 Python
德国黑胶唱片、街头服装及运动鞋网上商店:HHV
2018/08/24 全球购物
Square Off美国/加拿大:世界上最聪明的国际象棋棋盘
2018/12/06 全球购物
教师演讲稿范文
2014/01/08 职场文书
招商专员岗位职责
2014/02/08 职场文书
公益广告语集锦
2014/03/13 职场文书
初一学生期末评语
2014/04/24 职场文书
支行行长竞聘演讲稿
2014/05/15 职场文书
python3使用diagrams绘制架构图的步骤
2021/04/08 Python
关于Vue Router的10条高级技巧总结
2021/05/06 Vue.js