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利用COM对象访问SQLServer、Access
Oct 09 PHP
PHP中实现生成静态文件的方法缓解服务器压力
Jan 07 PHP
简单的php中文转拼音的实现代码
Feb 11 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(五)
Jun 23 PHP
php验证session无效的解决方法
Nov 04 PHP
php内存缓存实现方法
Jan 24 PHP
php获取指定范围内最接近数的方法
Jun 02 PHP
php 在线导入mysql大数据程序
Jun 11 PHP
PHP递归遍历指定文件夹内的文件实现方法
Nov 15 PHP
PHP中的正则表达式实例详解
Apr 25 PHP
Yii框架实现多数据库配置和操作的方法
May 25 PHP
ThinkPHP中图片按比例切割的代码实例
Mar 08 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
Terran兵种介绍
2020/03/14 星际争霸
oracle资料库函式库
2006/10/09 PHP
PHP的5个安全措施小结
2012/07/17 PHP
PHP获取http请求的头信息实现步骤
2012/12/16 PHP
php_screw安装使用教程(另一个PHP代码加密实现)
2014/05/29 PHP
php中数组最简单的使用方法
2020/12/27 PHP
JQuery 操作select标签实现代码
2010/05/14 Javascript
jQuery中size()方法用法实例
2014/12/27 Javascript
JavaScript中的数值范围介绍
2014/12/29 Javascript
JavaScript常用正则验证函数实例小结【年龄,数字,Email,手机,URL,日期等】
2017/01/23 Javascript
vue-cli的eslint相关用法
2017/09/29 Javascript
Node.js中的child_process模块详解
2018/06/08 Javascript
解决mpvue + vuex 开发微信小程序vuex辅助函数mapState、mapGetters不可用问题
2018/08/03 Javascript
详解vue中axios的使用与封装
2019/03/20 Javascript
JQuery实现简单的复选框树形结构图示例【附源码下载】
2019/07/16 jQuery
vue实现前端分页完整代码
2020/06/17 Javascript
[01:00:13]完美世界DOTA2联赛 LBZS vs Forest 第一场 11.07
2020/11/09 DOTA
python进阶教程之循环相关函数range、enumerate、zip
2014/08/30 Python
使用FastCGI部署Python的Django应用的教程
2015/07/22 Python
python开发之str.format()用法实例分析
2016/02/22 Python
Python while 循环使用的简单实例
2016/06/08 Python
对Python3中dict.keys()转换成list类型的方法详解
2019/02/03 Python
Python flask框架post接口调用示例
2019/07/03 Python
简单了解python的break、continue、pass
2019/07/08 Python
Pandas 解决dataframe的一列进行向下顺移问题
2019/12/27 Python
Python TCPServer 多线程多客户端通信的实现
2019/12/31 Python
python 工具 字符串转numpy浮点数组的实现
2020/03/14 Python
python判断元素是否存在的实例方法
2020/09/24 Python
Jacadi Paris美国官方网站:法国童装品牌
2017/10/15 全球购物
PHP使用Redis队列执行定时任务实例讲解
2021/03/24 PHP
应届生个人求职信模板
2013/11/26 职场文书
庆七一活动总结
2014/08/27 职场文书
2014年庆祝国庆65周年演讲稿
2014/09/21 职场文书
2015年小学财务工作总结
2015/07/20 职场文书
推广普通话宣传标语口号
2015/12/26 职场文书
nginx安装以及配置的详细过程记录
2021/09/15 Servers