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 中的一些经验积累
Oct 09 PHP
用PHP写的基于Memcache的Queue实现代码
Nov 27 PHP
如何使用FireFox插件FirePHP调试PHP
Jul 23 PHP
phpexcel导入excel数据使用方法实例
Dec 24 PHP
linux下安装php的memcached客户端
Aug 03 PHP
php中使用session防止用户非法登录后台的方法
Jan 27 PHP
PHP cURL初始化和执行方法入门级代码
May 28 PHP
php实现读取和写入tab分割的文件
Jun 01 PHP
php中使用GD库做验证码
Mar 31 PHP
PHP获取对象属性的三种方法实例分析
Jan 03 PHP
PHP7创建COOKIE和销毁COOKIE的实例方法
Feb 03 PHP
PHP7 其他语言层面的修改
Mar 09 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
Smarty Foreach 使用说明
2010/03/23 PHP
探讨php define()函数及defined()函数使用详解
2013/06/09 PHP
php删除一个路径下的所有文件夹和文件的方法
2018/02/07 PHP
javascript String 的扩展方法集合
2008/06/01 Javascript
JavaScript 检测浏览器和操作系统的脚本
2008/12/26 Javascript
jquery Moblie入门—hello world的示例代码学习
2013/01/08 Javascript
js 弹出虚拟键盘修改密码的简单实例
2016/10/10 Javascript
angular双向绑定模拟探索
2016/12/26 Javascript
JavaScript Canvas绘制圆形时钟效果
2020/08/20 Javascript
浅谈webpack打包生成的bundle.js文件过大的问题
2018/02/22 Javascript
vue中的$emit 与$on父子组件与兄弟组件的之间通信方式
2018/05/13 Javascript
小程序ios音频播放没声音问题的解决
2018/07/11 Javascript
如何使用less实现随机下雪动画详解
2019/01/02 Javascript
JS实现带阴历的日历功能详解
2019/01/24 Javascript
VueJS 取得 URL 参数值的方法
2019/07/19 Javascript
Vue-router中hash模式与history模式的区别详解
2020/12/15 Vue.js
[01:38]DOTA2第二届亚洲邀请赛中国区预选赛出线战队晋级之路
2017/01/17 DOTA
[22:59]VGJ.S vs VG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
PyQt5每天必学之拖放事件
2020/08/27 Python
Python求一批字符串的最长公共前缀算法示例
2019/03/02 Python
使用python搭建服务器并实现Android端与之通信的方法
2019/06/28 Python
Django上使用数据可视化利器Bokeh解析
2019/07/31 Python
Python 单例设计模式用法实例分析
2019/09/23 Python
Pytorch的mean和std调查实例
2020/01/02 Python
Python通过2种方法输出带颜色字体
2020/03/02 Python
PyTorch的torch.cat用法
2020/06/28 Python
canvas实现图片马赛克的示例代码
2018/03/26 HTML / CSS
美国婴儿用品及配件购买网站:Munchkin
2019/04/03 全球购物
Linux如何修改文件和文件夹的权限
2012/06/27 面试题
竞选班委演讲稿
2014/04/28 职场文书
小学优秀班集体申报材料
2014/05/25 职场文书
协商一致解除劳动合同协议书
2014/09/14 职场文书
法人授权委托书样本
2014/09/19 职场文书
教师党员个人整改措施
2014/10/27 职场文书
2014年流动人口工作总结
2014/11/26 职场文书
植物园观后感
2015/06/11 职场文书