ThinkPHP入库出现两次反斜线转义及数据库类转义的解决方法


Posted in PHP onNovember 04, 2014

本文实例讲述了ThinkPHP入库出现两次反斜线转义及数据库类转义的解决方法。分享给大家供大家参考。具体方法如下:

这种情况是在 magic_quotes_gpc 开启的情况下发生的。原因是thinkphp在入库的时候没有判断 magic_quotes_gpc 是否开启,不管三七二十一地进行了转义处理。
解决办法是在入口文件增加如下代码则可:

if (!get_magic_quotes_gpc()) {  

    function addslashes_deep($value) {   

        $value = is_array($value) ?  

            array_map('addslashes_deep', $value) :  

            addslashes($value);  

        return $value;  

   }  

   $_POST = array_map('addslashes_deep', $_POST);  

   $_GET = array_map('addslashes_deep', $_GET);  

   $_COOKIE = array_map('addslashes_deep', $_COOKIE);  

   $_REQUEST = array_map('addslashes_deep', $_REQUEST);  

}

有人这样修改DbMysql.class.php中的转义函数:

public function escape_string($str) {  

if (get_magic_quotes_gpc()) {  

return $str;  

}  

if($this->_linkID) {  

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

}else{  

return mysql_escape_string($str);  

}  

}
 

其实这种方法并不可取!因为如果魔术函数on时,而$str又不是post或get得来(比如读取文本、数据库),它还是没加反斜线。
所以我不管$str是否已经被转义,一律先去除转义,然后再加上转义。这样就避免了二次转义,也避免了遗漏转义。
下面是我的修改方法:

public function escape_string($str) {  

$str = stripslashes($str);  

if($this->_linkID) {  

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

}else{  

return mysql_escape_string($str);  

}  

}

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

PHP 相关文章推荐
附件名前加网站名
Mar 23 PHP
整理的9个实用的PHP库简介和下载
Nov 09 PHP
不支持fsockopen但支持culr环境下下ucenter与modoer通讯问题
Aug 12 PHP
php中使用redis队列操作实例代码
Feb 07 PHP
ubuntu下编译安装xcache for php5.3 的具体操作步骤
Jun 18 PHP
WordPress自定义时间显示格式
Mar 27 PHP
PHP获取毫秒级时间戳的方法
Apr 15 PHP
ThinkPHP连接Oracle数据库
Apr 22 PHP
PHP验证码类ValidateCode解析
Jan 07 PHP
PHP输出Excel PHPExcel的方法
Jul 26 PHP
Laravel5.4框架使用socialite实现github登录的方法
Mar 20 PHP
PHP实现给定一列字符,生成指定长度的所有可能组合示例
Jun 22 PHP
PHP读取CURL模拟登录时生成Cookie文件的方法
Nov 04 #PHP
PHP自动重命名文件实现方法
Nov 04 #PHP
php以post形式发送xml的方法
Nov 04 #PHP
PHP中Header使用的HTTP协议及常用方法小结
Nov 04 #PHP
phpmyadmin中禁止外网使用的方法
Nov 04 #PHP
PHP中ini_set与ini_get用法实例
Nov 04 #PHP
PHP实现模仿socket请求返回页面的方法
Nov 04 #PHP
You might like
打造计数器DIY三步曲(上)
2006/10/09 PHP
PHP序列化/对象注入漏洞分析
2016/04/18 PHP
ThinkPHP中Common/common.php文件常用函数功能分析
2016/05/20 PHP
网页设计常用的一些技巧
2006/12/22 Javascript
js 分栏效果实现代码
2009/08/29 Javascript
JavaScript 10件让人费解的事情
2010/02/15 Javascript
form表单中去掉默认的enter键提交并绑定js方法实现代码
2013/04/01 Javascript
javascript强大的日期函数代码分享
2013/09/04 Javascript
moment.js轻松实现获取当前日期是当年的第几周
2015/02/05 Javascript
基于jQuery全屏焦点图左右切换插件responsiveslides
2015/09/07 Javascript
jQuery实现的网页右下角tab样式在线客服效果代码
2015/10/23 Javascript
Bootstrap学习笔记之css组件(3)
2016/06/07 Javascript
jquery实现的table排序功能示例
2017/03/10 Javascript
基于js原生和ajax的get和post方法以及jsonp的原生写法实例
2017/10/16 Javascript
基于vue-cli创建的项目的目录结构及说明介绍
2017/11/23 Javascript
微信小程序获取手机系统信息的方法【附源码下载】
2017/12/07 Javascript
AngularJS与BootStrap模仿百度分页的示例代码
2018/05/23 Javascript
详解vue中$nextTick和$forceUpdate的用法
2019/12/11 Javascript
微信小程序使用 vant Dialog组件的正确方式
2020/02/21 Javascript
javascript+Canvas实现画板功能
2020/06/23 Javascript
Nuxt pages下不同的页面对应layout下的页面布局操作
2020/11/05 Javascript
Python实现竖排打印传单手机号码易撕条
2015/03/16 Python
Python提取网页中超链接的方法
2016/09/18 Python
Python subprocess模块详细解读
2018/01/29 Python
python同时遍历数组的索引和值的实例
2018/11/15 Python
Python如何使用字符打印照片
2020/01/03 Python
python线程里哪种模块比较适合
2020/08/02 Python
Python Tkinter实例——模拟掷骰子
2020/10/24 Python
全方位了解CSS3的Regions扩展
2015/08/07 HTML / CSS
俄罗斯最大的消费电子连锁零售商:Mvideo
2017/06/25 全球购物
linux面试题参考答案(9)
2016/01/29 面试题
大学生求职简历的自我评价范文
2013/10/12 职场文书
《秋游》教学反思
2014/04/24 职场文书
网络营销计划
2015/01/17 职场文书
2015年会计年终工作总结
2015/05/26 职场文书
Nginx图片服务器配置之后图片访问404的问题解决
2022/03/21 Servers