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 相关文章推荐
多数据表共用一个页的新闻发布
Oct 09 PHP
xajax写的留言本
Nov 25 PHP
source.php查看源文件
Dec 09 PHP
php expects parameter 1 to be resource, array given 错误
Mar 23 PHP
深入php之规范编程命名小结
May 15 PHP
解析thinkphp中的导入文件标签
Jun 20 PHP
简单谈谈php中的unicode和utf8编码
Jun 10 PHP
PHP图形计数器程序显示网站用户浏览量
Jul 20 PHP
PHP通过CURL实现定时任务的图片抓取功能示例
Oct 03 PHP
PHP大文件分割上传 PHP分片上传
Aug 28 PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
Dec 20 PHP
TP3.2.3框架文件上传操作实例详解
Jan 23 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
php自定义类fsocket模拟post或get请求的方法
2015/07/31 PHP
在Mac OS上搭建PHP的Yii框架及相关测试环境
2016/02/14 PHP
PHP二维数组去重算法
2016/12/17 PHP
PHP实现的分解质因数操作示例
2018/08/01 PHP
PHP结合Ffmpeg快速搭建流媒体服务的实践记录
2018/10/31 PHP
PHP结合Redis+MySQL实现冷热数据交换应用案例详解
2019/07/09 PHP
laravel框架实现去掉URL中index.php的方法
2019/10/12 PHP
jquery批量设置属性readonly和disabled的方法
2014/01/24 Javascript
倒记时60刷新网页的js代码
2014/02/18 Javascript
JavaScript中的数值范围介绍
2014/12/29 Javascript
贴近用户体验的Jquery日期、时间选择插件
2015/08/19 Javascript
纯JS代码实现隔行变色鼠标移入高亮
2016/11/23 Javascript
微信小程序 支付功能实现PHP实例详解
2017/05/12 Javascript
AngularJS中下拉框的基本用法示例
2017/10/11 Javascript
vue实现树形菜单效果
2018/03/19 Javascript
如何把vuejs打包出来的文件整合到springboot里
2018/07/26 Javascript
javascript json对象小技巧之键名作为变量用法分析
2019/11/11 Javascript
查找Vue中下标的操作(some和findindex)
2020/08/12 Javascript
逐行分析鸿蒙系统的 JavaScript 框架(推荐)
2020/09/17 Javascript
Python网页解析利器BeautifulSoup安装使用介绍
2015/03/17 Python
初步介绍Python中的pydoc模块和distutils模块
2015/04/13 Python
python脚本设置超时机制系统时间的方法
2016/02/21 Python
PyTorch快速搭建神经网络及其保存提取方法详解
2018/04/28 Python
对python中的xlsxwriter库简单分析
2018/05/04 Python
Win10下安装并使用tensorflow-gpu1.8.0+python3.6全过程分析(显卡MX250+CUDA9.0+cudnn)
2020/02/17 Python
python import 上级目录的导入
2020/11/03 Python
基于CSS3实现的几个小loading效果
2018/09/27 HTML / CSS
html5理解head_动力节点Java学院整理
2017/07/13 HTML / CSS
Beach Bunny Swimwear官网:设计师泳装和性感比基尼
2019/03/13 全球购物
怎么写好自荐信
2013/10/30 职场文书
优秀企业获奖感言
2014/02/01 职场文书
残疾人小组计划书
2014/04/27 职场文书
助残日活动总结
2014/08/27 职场文书
小学生五年级大队长竞选发言稿
2014/09/12 职场文书
python简单验证码识别的实现过程
2021/06/20 Python
数据分析数据库ClickHouse在大数据领域应用实践
2022/04/03 MySQL