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 相关文章推荐
Banner程序
Oct 09 PHP
php array的学习笔记
May 10 PHP
hadoop常见错误以及处理方法详解
Jun 19 PHP
PHP 下载文件时自动添加bom头的方法实例
Jan 10 PHP
php+xml实现在线英文词典之添加词条的方法
Jan 23 PHP
php上传图片客户端和服务器端实现方法
Mar 30 PHP
在WordPress中使用wp-cron插件来设置定时任务
Dec 10 PHP
php简单实现短网址(短链)还原的方法(测试可用)
May 09 PHP
php 生成Tab键或逗号分隔的CSV
Sep 24 PHP
PHP单例模式详解及实例代码
Dec 21 PHP
php中的异常和错误浅析
May 03 PHP
php使用yield对性能提升的测试实例分析
Sep 19 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 管理系统程序中的后门
2009/08/05 PHP
php用数组返回无限分类的列表数据的代码
2010/08/08 PHP
PHP-redis中文文档介绍
2013/02/07 PHP
phpstorm编辑器乱码问题解决
2014/12/01 PHP
php获取指定数量随机字符串的方法
2017/02/06 PHP
swoole锁的机制代码实例讲解
2021/03/04 PHP
动态加载iframe
2006/06/16 Javascript
jquery中$(#form :input)与$(#form input)的区别
2014/08/18 Javascript
JavaScript中实现异步编程模式的4种方法
2014/09/24 Javascript
判断访客终端类型集锦
2015/06/05 Javascript
jQuery.deferred对象使用详解
2016/03/18 Javascript
极力推荐一款小巧玲珑的可视化编辑器bootstrap-wysiwyg
2016/05/27 Javascript
vue-router:嵌套路由的使用方法
2017/02/21 Javascript
vue组件初学_弹射小球(实例讲解)
2017/09/06 Javascript
JS和Canvas实现图片的预览压缩和上传功能
2018/03/30 Javascript
详解Angular6.0使用路由步骤(共7步)
2018/06/29 Javascript
通过实例讲解JS如何防抖动
2019/06/15 Javascript
教你30秒发布一个TypeScript包到NPM的方法步骤
2019/07/22 Javascript
jQuery Ajax async=>false异步改为同步时,解决导致浏览器假死的问题
2019/07/22 jQuery
在vue中使用echarts(折线图的demo,markline用法)
2020/07/20 Javascript
[01:56]林书豪DOTA2上海特级锦标赛励志短片
2016/03/05 DOTA
Python代码实现KNN算法
2017/12/20 Python
python生成tensorflow输入输出的图像格式的方法
2018/02/12 Python
Python facenet进行人脸识别测试过程解析
2019/08/16 Python
python基础 range的用法解析
2019/08/23 Python
pytorch GAN伪造手写体mnist数据集方式
2020/01/10 Python
详解python算法常用技巧与内置库
2020/10/17 Python
canvas之万花筒效果的简单实现(推荐)
2016/08/16 HTML / CSS
澳大利亚买卖正宗二手奢侈品交易平台:Luxe.It.Fwd
2019/10/16 全球购物
中专生职业生涯规划书范文
2013/12/29 职场文书
绿化先进工作者事迹材料
2014/01/30 职场文书
施工质量承诺书范文
2014/05/30 职场文书
市级三好学生事迹材料
2014/08/27 职场文书
先进基层党组织材料
2014/12/25 职场文书
2015年青年教师工作总结
2015/05/25 职场文书
交通安全主题班会
2015/08/12 职场文书