这篇文章主要介绍了ThinkPHP入库出现两次反斜线转义及数据库类转义的解决方法,主要通过针对magic_quotes_gpc开启的情况下进行检查与判断转义来实现,需要的朋友可以参考下

本文实例讲述了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 mysql自动反转义_ThinkPHP入库出现两次反斜线转义及数据库类转义的解决方法...相关推荐

  1. mysql配置服务器失败怎么办_安装程序配置服务器失败怎么办?数据库配置失败的解决方法...

    安装程序配置服务器失败怎么办?近期使用数据库SQL Server 2000的用户反应无法使用的现象,在运行的时候出现了"安装程序配置服务器失败"的提示该怎么办呢?该问题是在运行SQ ...

  2. pycharm连接mysql1193错误_pycharm连接mysql数据库提示错误的解决方法_数据库

    忘记phpmyadmin密码怎么重置_数据库 重置phpmyadmin密码的方法是:1.停止mysql服务:2.跳过验证启动mysql:3.重新设置密码:4.更新权限:5.重新启动mysql,如[ki ...

  3. idea连接不了5.6mysql_IDEA无法连接mysql数据库的6种解决方法大全

    本文主要介绍了IDEA无法连接mysql数据库的6种解决方法大全,分享给大家,具体如下: 1.本地的mysql没有创建该数据库(笔者就是这个原因!) 查看数据库发现没有,重建就可以了 测试成功! 网上 ...

  4. CentOS6.8下MySQL数据库忘记root密码解决方法

    CentOS6.8下MySQL数据库忘记root密码解决方法 参考文章: (1)CentOS6.8下MySQL数据库忘记root密码解决方法 (2)https://www.cnblogs.com/vu ...

  5. idea无法连接mysql_IDEA无法连接mysql数据库的6种解决方法大全

    IDEA无法连接mysql数据库的6种解决方法大全 本文主要介绍了IDEA无法连接mysql数据库的6种解决方法大全,分享给大家,具体如下: 1.本地的mysql没有创建该数据库(笔者就是这个原因!) ...

  6. mysql报错ERROR 1206 (HY000): The total number of locks exceeds the lock table size的解决方法...

    1. 问题背景         InnoDB是新版MySQL(v5.5及以后)默认的存储引擎,之前版本的默认引擎为MyISAM,因此,低于5.5版本的mysql配置文件.my.cnf中,关于InnoD ...

  7. MYSQL描述选课系统的问题与_mysql+php实现选课系统中遇到的问题及解决方法

    首先是一些mysql 的基本命令 删除表格  drop ; 约束条件 : primary key   设置为主键 unique    值唯一 not null   非空 foreighn key(ke ...

  8. sql语句创建mysql数据库常见错误以及解决方法

    Error Code: 1366. Incorrect string value: '\xE5\xAD\xA6\xE5\xB7\xA5...'     将该表中的每一列的字符集都改为utf-8    ...

  9. mysql+concat函数问题_Mysql5.7中使用group concat函数数据被截断的问题完美解决方法...

    前天在生产环境中遇到一个问题:使用 GROUP_CONCAT函数select出来的数据被截断了,最长长度不超过1024字节,开始还以为是navicat客户端自身对字段长度做了限制的问题.后面故意重新I ...

最新文章

  1. Docker完整建站详介
  2. SGU 282 Isomorphism
  3. 实体银行网点一定被消灭?银行如何平衡数字创新与线下体验?
  4. LoadRunner常用函数(转)
  5. 【今日CS 视觉论文速览】Mon, 14 Jan 2019
  6. 87-Moving average of oscillator,移动平均振荡指标.(2015.7.4)
  7. Qt编程环境下学习《OpenGL编程指南(原书第九版)》(一)
  8. 极品抓鸡36课------8080端口入侵笔记
  9. 博途 V14安装教程
  10. matplotlib绘图并导出eps矢量图和svg矢量图
  11. 数据分析师的职业发展路径是怎样的?
  12. GNSS观测数据下载地址
  13. 计算机开机后报rundll,图文教你win10开机出现rundll无法找到入口的解决方法
  14. 2.4G双向系统超低成本之选--Ci24R1小尺寸 DFN8/2*2
  15. 教育类型网站用户体验分析——以UMU学习平台、学生安全教育平台、师路南通为例...
  16. Discuz!教程之门户列表页文章中无图片时,从图库中选择一张作为封面
  17. 4部网页配色电子书库之第4部——网站配色方案赏析
  18. Github 配置SSH key 下载项目并关联
  19. Bugku旧平台web writeup
  20. Android 通过MediaMetadataRetriever获取视频封面和时长

热门文章

  1. 如何 方法内指令重排 进制_Java虚拟机jvm学习一:认识jvm的运行机制
  2. 物理学与计算机相关参考文献,物理学专业论文参考文献
  3. mac学python_新手小白学Python必备编程利器Pycharm快捷键大全(Win+Mac)
  4. QT每日一练day12:QDailog
  5. 相机模型之世界坐标、相机坐标、归一化坐标、图像坐标、像素坐标、内参、外参、转换关系总结
  6. C语言之数组探究(一):定义、大小、初始化、访问和三要素
  7. java类加载器分类_Java 类加载器的种类
  8. python rarfile不支持unicode_python – zipfile提取时的unicode错误
  9. portal认证 php,如何用PHP制作OSSH 免费版华为Portal系统认证前端页面
  10. 处理mp3_如何把MP3转换成FLAC格式?这三个方法简单快速