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 相关文章推荐
javascript 小型动画组件与实现代码
Jun 02 PHP
7个超级实用的PHP代码片段
Jul 11 PHP
PHP中根据IP地址判断城市实现城市切换或跳转代码
Sep 04 PHP
CodeIgniter框架过滤HTML危险代码
Jun 12 PHP
PHP之autoload运行机制实例分析
Aug 28 PHP
PHP中file_get_contents高?用法实例
Sep 24 PHP
PHP中使用Imagick读取pdf并生成png缩略图实例
Jan 21 PHP
PHP生成随机字符串(3种方法)
Sep 25 PHP
PHP 7安装使用体验之性能大提升,兼容性强,扩展支持不够(升级PHP要谨慎)
Jul 27 PHP
PHP基于递归实现的约瑟夫环算法示例
Aug 27 PHP
PHP session垃圾回收机制实例分析
Jun 28 PHP
Vagrant(WSL)+PHPStorm+Xdebu 断点调试环境搭建
Dec 13 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 程序员应该使用的10个组件
2009/10/31 PHP
php中__toString()方法用法示例
2016/12/07 PHP
javascript 变量作用域 代码分析
2009/06/26 Javascript
IE iframe的onload方法分析小结
2010/01/07 Javascript
使用Jquery Aajx访问WCF服务(GET、POST、PUT、DELETE)
2012/03/16 Javascript
js实现的常用的左侧导航效果
2013/10/17 Javascript
javascript操作referer详细解析
2014/03/10 Javascript
JS判断客户端是手机还是PC的2个代码
2014/04/12 Javascript
用js模拟struts2的多action调用示例
2014/05/19 Javascript
JavaScript调用传递变量参数的相关问题及解决办法
2015/11/01 Javascript
javascript随机抽取0-100之间不重复的10个数
2016/02/25 Javascript
Bootstrap每天必学之工具提示(Tooltip)插件
2016/04/26 Javascript
JS使用正则表达式实现关键字替换加粗功能示例
2016/08/03 Javascript
JS 动态加载js文件和css文件 同步/异步的两种简单方式
2016/09/23 Javascript
常用Javascript函数与原型功能收藏(必看篇)
2016/10/09 Javascript
js简单实现网页换肤功能
2017/04/07 Javascript
在angular 6中使用 less 的实例代码
2018/05/13 Javascript
详解element-ui中form验证杂记
2019/03/04 Javascript
[00:55]深扒TI7聊天轮盘语音出处3
2017/05/11 DOTA
[00:32]2018DOTA2亚洲邀请赛iG出场
2018/04/03 DOTA
深度剖析使用python抓取网页正文的源码
2014/06/11 Python
Python函数式编程
2017/07/20 Python
python 重命名轴索引的方法
2018/11/10 Python
Python英文文本分词(无空格)模块wordninja的使用实例
2019/02/20 Python
django框架模型层功能、组成与用法分析
2019/07/30 Python
在OpenCV里使用Camshift算法的实现
2019/11/22 Python
Python基于百度AI实现OCR文字识别
2020/04/02 Python
python多线程semaphore实现线程数控制的示例
2020/08/10 Python
Python通过len函数返回对象长度
2020/10/22 Python
python3通过subprocess模块调用脚本并和脚本交互的操作
2020/12/05 Python
Joe Fresh官网:加拿大时尚品牌和零售连锁店
2016/11/30 全球购物
购房委托书范本
2014/09/18 职场文书
学校师德师风整改方案
2014/10/28 职场文书
求职简历自我评价怎么写
2015/03/10 职场文书
2015年收银员个人工作总结
2015/04/01 职场文书
2016年小学推普宣传周活动总结
2016/04/06 职场文书