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模板引擎SMARTY
Oct 09 PHP
MySQL数据源表结构图示
Jun 05 PHP
PHP实现读取一个1G的文件大小
Aug 24 PHP
PHP is_subclass_of函数的一个BUG和解决方法
Jun 01 PHP
浅谈Eclipse PDT调试PHP程序
Jun 09 PHP
百度地图API应用之获取用户的具体位置
Jun 10 PHP
PHP常用的小程序代码段
Nov 14 PHP
利用laravel搭建一个迷你博客实战教程
Aug 13 PHP
PHP创建自己的Composer包方法
Apr 09 PHP
PHP+Session防止表单重复提交的解决方法
Apr 09 PHP
PHP使用pdo实现事务处理操作示例
Sep 05 PHP
laravel实现查询最后执行的一条sql语句的方法
Oct 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
全国FM电台频率大全 - 25 云南省
2020/03/11 无线电
杏林同学录(七)
2006/10/09 PHP
php中实现进程锁与多进程的方法
2016/09/18 PHP
25个优雅的jQuery Tooltip插件推荐
2011/05/25 Javascript
JavaScript高级程序设计 客户端存储学习笔记
2011/09/10 Javascript
js实现的仿新浪微博完美的时间组件升级版
2011/12/20 Javascript
获取元素距离浏览器周边的位置的方法getBoundingClientRect
2013/04/17 Javascript
禁用页面部分JavaScript不是全部而是部分
2014/09/03 Javascript
jquery控制页面部分刷新的方法
2015/06/24 Javascript
jQuery右侧选项卡焦点图片轮播特效代码分享
2015/09/05 Javascript
bootstrap实现弹窗和拖动效果
2016/01/03 Javascript
详解jquery事件delegate()的使用方法
2016/01/25 Javascript
使用Bootstrap框架制作查询页面的界面实例代码
2016/05/27 Javascript
Jquery为DIV添加click事件的简单实例
2016/06/02 Javascript
原生 JS Ajax,GET和POST 请求实例代码
2016/06/08 Javascript
javascript简单实现等比例缩小图片的方法
2016/07/27 Javascript
Vue.js学习之过滤器详解
2017/01/22 Javascript
ES6新特性一: let和const命令详解
2017/04/20 Javascript
jQuery 开发之EasyUI 添加数据的实例
2017/09/26 jQuery
通过Kettle自定义jar包供javascript使用
2020/01/29 Javascript
在Vue中使用HOC模式的实现
2020/08/23 Javascript
vue表单验证之禁止input输入框输入空格
2020/12/03 Vue.js
python处理中文编码和判断编码示例
2014/02/26 Python
Python获取当前公网ip并自动断开宽带连接实例代码
2018/01/12 Python
Python转换时间的图文方法
2019/07/01 Python
python opencv捕获摄像头并显示内容的实现
2019/07/11 Python
Python中利用LSTM模型进行时间序列预测分析的实现
2019/07/26 Python
Python matplotlib以日期为x轴作图代码实例
2019/11/22 Python
解决Python中报错TypeError: must be str, not bytes问题
2020/04/07 Python
Python模拟登入的N种方式(建议收藏)
2020/05/31 Python
css3 矩阵的使用详解
2018/03/20 HTML / CSS
海淘零差价,宝贝全球购: 宝贝格子
2016/08/24 全球购物
Microsoft Advertising美国:微软搜索广告
2019/05/01 全球购物
Linux面试题LINUX系统类
2014/11/19 面试题
大学生就业自荐书
2014/06/16 职场文书
拖欠货款起诉状
2015/05/20 职场文书