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分页函数
Jul 08 PHP
综合图片计数器
Oct 09 PHP
PHP5 字符串处理函数大全
Mar 23 PHP
smarty模板中拼接字符串的方法
Feb 14 PHP
PHP URL参数获取方式的四种例子
Feb 28 PHP
YII实现分页的方法
Jul 09 PHP
PHP中使用虚代理实现延迟加载技术
Nov 05 PHP
PHP程序员常见的40个陋习,你中了几个?
Nov 20 PHP
php通过array_shift()函数移除数组第一个元素的方法
Mar 18 PHP
thinkPHP5.0框架URL访问方法详解
Mar 18 PHP
Laravel构建即时应用的一种实现方法详解
Aug 31 PHP
PHP中上传文件打印错误错误类型分析
Apr 14 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 目录遍历、删除 函数的使用介绍
2013/04/28 PHP
PHP中把stdClass Object转array的几个方法
2014/05/08 PHP
php使用gzip压缩传输js和css文件的方法
2015/07/29 PHP
php菜单/评论数据递归分级算法的实现方法
2019/08/01 PHP
PHP实现创建一个RPC服务操作示例
2020/02/23 PHP
超清晰的document对象详解
2007/02/27 Javascript
textContent在Firefox下与innerText等效的属性
2007/05/12 Javascript
JQuery 操作/获取table具体代码
2013/06/13 Javascript
jquery 获取表单元素里面的值示例代码
2013/07/28 Javascript
JavaScript中的console.log()函数详细介绍
2014/12/29 Javascript
js实现两点之间画线的方法
2015/05/12 Javascript
jQuery垂直多级导航菜单代码分享
2015/08/18 Javascript
js实现目录链接,内容跟着目录滚动显示的简单实例
2016/10/15 Javascript
vue基于Element构建自定义树的示例代码
2017/09/19 Javascript
iView-admin 动态路由问题的解决方法
2018/10/03 Javascript
javascript关于“时间”的一次探索
2019/07/24 Javascript
JS数组方法reduce的用法实例分析
2020/03/03 Javascript
JS实现放烟花效果
2020/03/10 Javascript
Vue如何实现变量表达式选择器
2021/02/18 Vue.js
Python导出数据到Excel可读取的CSV文件的方法
2015/05/12 Python
python实现web方式logview的方法
2015/08/10 Python
Python 性能优化技巧总结
2016/11/01 Python
python使用turtle绘制分形树
2018/06/22 Python
Numpy的简单用法小结
2019/08/28 Python
python从zip中删除指定后缀文件(推荐)
2019/12/05 Python
Python 创建守护进程的示例
2020/09/29 Python
全球领先的各类汽车配件零售商:Advance Auto Parts
2016/08/26 全球购物
澳大利亚在线百货商店:Real Smart
2017/08/13 全球购物
Nike挪威官网:Nike.com (NO)
2018/11/26 全球购物
世界领先的豪华床上用品供应商之一:Bedeck Home
2019/03/18 全球购物
生产副总岗位职责
2013/11/28 职场文书
费用会计岗位职责
2014/01/01 职场文书
经典婚礼主持开场白
2014/03/13 职场文书
文明美德伴我成长演讲稿
2014/05/12 职场文书
2014年作风建设剖析材料
2014/10/23 职场文书
win10如何快速切换窗口 win10切换窗口快捷键分享
2022/07/23 数码科技