ThinkPHP提交表单时默认自动转义的解决方法


Posted in PHP onNovember 25, 2014

本文实例讲述了ThinkPHP提交表单时默认自动转义的解决方法。分享给大家供大家参考。具体方法如下:

一、问题:

在ThinkPHP中提交表单插入数据的时候,单引号和双引号是会被自动转义的,就是会自动的加上反斜线,但是我不想给单引号和双引号加上反斜线.

在ThinkPHP中提交表单插入数据的时候,单引号和双引号是会被自动转义的,就是会自动的加上反斜线,但是我不想给单引号和双引号加上反斜线,在ThinkPHP中提交表单插入数据的时候,单引号和双引号是会被自动转义的,就是会自动的加上反斜线,但是我不想给单引号和双引号加上反斜线,如:hds"gh"j'g'h 会被自动转义为:hds\"gh\"j\'g\'h.

请注意需要的是取消这个转义的功能,而不是使用stripslashes() 函数删除这些反斜杠,即不需要官方的这个自动转义的功能.

二、解决方法:

在网上搜索到解决方法:

1、在thinkphp目录下,依次打开 ThinkPHP\Lib\Driver\Db 目录,并在dbmysql.class.php 这个文件中把 escapeString 函数的函数修改成:

public function escapeString($str) {  

//修改 周蛮子 放双引号双重转义  

if (!get_magic_quotes_gpc()){  

if($this->_linkID) {  

return mysql_real_escape_string($str,$this->_linkID);  

}else{  

return mysql_escape_string($str);  

}  

} else {  

return $str;  

}  

}

原函数:
public function escapeString($str) {  

//修改 周蛮子 放双引号双重转义  

if($this->_linkID) {  

return mysql_real_escape_string($str,$this->_linkID);  

}else{  

return mysql_escape_string($str);  

}  

}

2、在公共文件中加入:
//防止双重转义  

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);  

}

注:如果服务器开了转义,那么就经过thinkphp再次转义后,就会在程序中产生双重转义的Bug

经过修改后,我的网站程序后台录入就没什么问题了,看来大家以后如果有碰到使用Thinkphp时,注意如果服务器开启了过滤单引号或双引号的,可能就会跟ThinkPHP起冲突的了,所以加一层判断,就可以很好的解决这个问题了.

希望本文所述对大家的ThinkPHP框架程序设计有所帮助。

PHP 相关文章推荐
php 在线打包_支持子目录
Jun 28 PHP
介绍一些PHP判断变量的函数
Apr 24 PHP
php中json_decode()和json_encode()的使用方法
Jun 04 PHP
php实现转换ubb代码的方法
Jun 18 PHP
php实现微信公众号主动推送消息
Dec 31 PHP
实例讲解如何在PHP的Yii框架中进行错误和异常处理
Mar 17 PHP
php实现跨域提交form表单的方法【2种方法】
Oct 17 PHP
php微信公众平台开发(一) 配置接口
Dec 06 PHP
基于ThinkPHP5.0实现图片上传插件
Sep 25 PHP
PHP设计模式之PHP迭代器模式讲解
Mar 22 PHP
如何让PHP编码更加好看利于阅读
May 12 PHP
PHP命令行与定时任务
Apr 01 PHP
php中ltrim()、rtrim()与trim()删除字符空格实例
Nov 25 #PHP
使用PHP Socket 编程模拟Http post和get请求
Nov 25 #PHP
PHP实现无限极分类图文教程
Nov 25 #PHP
php获取指定日期之间的各个周和月的起止时间
Nov 24 #PHP
Thinkphp搭建包括JS多语言的多语言项目实现方法
Nov 24 #PHP
thinkphp判断访客为手机端或PC端的方法
Nov 24 #PHP
ThinkPHP公共配置文件与各自项目中配置文件组合的方法
Nov 24 #PHP
You might like
PHP 字符串长度判断效率更高的方法
2014/03/02 PHP
一个严格的PHP Session会话超时时间设置方法
2014/06/10 PHP
yii分页组件用法实例分析
2015/12/28 PHP
JavaScript入门教程(11) js事件处理
2009/01/31 Javascript
javascript 使用 NodeList需要注意的问题
2013/03/04 Javascript
jquery实现动态菜单的实例代码
2013/11/28 Javascript
JavaScript中的函数的两种定义方式和函数变量赋值
2014/05/12 Javascript
jQuery 计算iframe 窗口大小的方法
2014/05/13 Javascript
JavaScript构造函数详解
2015/12/27 Javascript
实例讲解使用原生JavaScript处理AJAX请求的方法
2016/05/10 Javascript
Node.js开启Https的实践详解
2016/10/25 Javascript
Vue 单文件中的数据传递示例
2017/03/21 Javascript
JS中使用gulp实现压缩文件及浏览器热加载功能
2017/07/12 Javascript
浅谈vue2 单页面如何设置网页title
2017/11/08 Javascript
Vue进度条progressbar组件功能
2018/04/17 Javascript
vue 关闭浏览器窗口的时候,清空localStorage的数据示例
2019/11/06 Javascript
jquery实现聊天机器人
2020/02/08 jQuery
react 原生实现头像滚动播放的示例
2020/04/21 Javascript
[41:08]2014 DOTA2国际邀请赛中国区预选赛 HGT VS NE
2014/05/22 DOTA
Python脚本实现Web漏洞扫描工具
2016/10/25 Python
Django csrf 验证问题的实现
2018/10/09 Python
为什么str(float)在Python 3中比Python 2返回更多的数字
2018/10/16 Python
python版本五子棋的实现代码
2018/12/11 Python
Python函数参数分类原理详解
2020/05/28 Python
python代码区分大小写吗
2020/06/17 Python
python获取系统内存占用信息的实例方法
2020/07/17 Python
使用JS+CSS3技术:让你的名字动起来
2013/04/27 HTML / CSS
html5 canvas实现跟随鼠标旋转的箭头
2016/03/11 HTML / CSS
蛋白质世界:Protein World
2017/11/23 全球购物
Myprotein丹麦官网:欧洲第一运动营养品牌
2019/04/15 全球购物
C#笔试题和英文面试题
2013/02/07 面试题
大学生工作推荐信范文
2013/12/02 职场文书
应届毕业生个人求职自荐信
2014/01/06 职场文书
内刊编辑求职自荐书范文
2014/02/19 职场文书
python删除csv文件的行列
2021/04/06 Python
MySQL中distinct和count(*)的使用方法比较
2021/05/26 MySQL