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 相关文章推荐
php下删除一篇文章生成的多个静态页面
Aug 08 PHP
如何使用PHP计算上一个月的今天
May 23 PHP
使用Curl进行抓取远程内容时url中文编码问题示例探讨
Oct 29 PHP
php 根据url自动生成缩略图并处理高并发问题
Jan 23 PHP
php目录操作实例代码
Feb 21 PHP
php选择排序法实现数组排序实例分析
Feb 16 PHP
typecho插件编写教程(二):写一个新插件
May 28 PHP
php使用for语句输出三角形的方法
Jun 09 PHP
header与缓冲区之间的深层次分析
Jul 30 PHP
laravel实现上传图片并在页面显示的例子
Oct 14 PHP
laravel 实现根据字段不同值做不同查询
Oct 23 PHP
Docker 安装 PHP并与Nginx的部署实例讲解
Feb 27 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
S900/ ETON E1-XM 收音机
2021/03/02 无线电
PHP自动生成后台导航网址的最佳方法
2013/08/27 PHP
浅谈php提交form表单
2015/07/01 PHP
什么是PEAR?什么是PECL?PHP中两个容易混淆的概念解释
2015/07/01 PHP
PHP+Mysql无刷新问答评论系统(源码)
2016/12/20 PHP
PHP校验15位和18位身份证号的类封装
2018/11/07 PHP
JS俄罗斯方块,包含完整的设计理念
2010/12/11 Javascript
javaScript 删除字符串空格多种方法小结
2012/10/24 Javascript
Jquery中巧用Ajax的beforeSend方法
2016/01/20 Javascript
prototype框架中美元符号$用法分析
2016/01/22 Javascript
WordPress 单页面上一页下一页的实现方法【附代码】
2016/03/10 Javascript
JavaScript实现汉字转换为拼音的库文件示例
2016/12/22 Javascript
js实现带简单弹性运动的导航条
2017/02/22 Javascript
vue watch监听对象及对应值的变化详解
2018/02/24 Javascript
Angular入口组件(entry component)与声明式组件的区别详解
2018/04/09 Javascript
webpack里使用jquery.mCustomScrollbar插件的方法
2018/05/30 jQuery
vue.js将时间戳转化为日期格式的实现代码
2018/06/05 Javascript
构建大型 Vue.js 项目的10条建议(小结)
2019/11/14 Javascript
[01:48]DOTA2 2015国际邀请赛中国区预选赛第二日战报
2015/05/27 DOTA
跟老齐学Python之list和str比较
2014/09/20 Python
Python实现比较两个列表(list)范围
2015/06/12 Python
python 网络编程常用代码段
2016/08/28 Python
python中dict字典的查询键值对 遍历 排序 创建 访问 更新 删除基础操作方法
2018/09/13 Python
解决Python获取字典dict中不存在的值时出错问题
2018/10/17 Python
使用Python正则表达式操作文本数据的方法
2019/05/14 Python
选择Python写网络爬虫的优势和理由
2019/07/07 Python
python实现图像随机裁剪的示例代码
2020/12/10 Python
教师实习期自我鉴定
2013/10/06 职场文书
餐厅经理岗位职责和岗位目标
2014/02/13 职场文书
中秋节主持词
2014/04/02 职场文书
推荐信格式范文
2014/05/09 职场文书
酒店优秀员工推荐信
2015/03/24 职场文书
党员干部学法用法心得体会
2016/01/21 职场文书
创业计划书之校园跑腿公司
2019/09/24 职场文书
jquery插件实现搜索历史
2021/04/24 jQuery
python使用matplotlib绘制图片时x轴的刻度处理
2021/08/30 Python