ThinkPHP提交表单时默认自动转义的解决方法


Posted in PHP onNovember 25, 2014

本文实例讲述了ThinkPHP提交表单时默认自动转义的解决方法。分享给大家供大家参考。具体方法如下:

一、问题:

在ThinkPHP中提交表单插入数据的时候,单引号和双引号是会被自动转义的,就是会自动的加上反斜线,但是我不想给单引号和双引号加上反斜线.

在ThinkPHP中提交表单插入数据的时候,单引号和双引号是会被自动转义的,就是会自动的加上反斜线,但是我不想给单引号和双引号加上反斜线,在ThinkPHP中提交表单插入数据的时候,单引号和双引号是会被自动转义的,就是会自动的加上反斜线,但是我不想给单引号和双引号加上反斜线,如:hds"gh"j'g'h 会被自动转义为:hds\"gh\"j\'g\'h.

请注意需要的是取消这个转义的功能,而不是使用stripslashes() 函数删除这些反斜杠,即不需要官方的这个自动转义的功能.

二、解决方法:

在网上搜索到解决方法:

1、在thinkphp目录下,依次打开 ThinkPHP\Lib\Driver\Db 目录,并在dbmysql.class.php 这个文件中把 escapeString 函数的函数修改成:

public function escapeString($str) {  

//修改 周蛮子 放双引号双重转义  

if (!get_magic_quotes_gpc()){  

if($this->_linkID) {  

return mysql_real_escape_string($str,$this->_linkID);  

}else{  

return mysql_escape_string($str);  

}  

} else {  

return $str;  

}  

}

原函数:
public function escapeString($str) {  

//修改 周蛮子 放双引号双重转义  

if($this->_linkID) {  

return mysql_real_escape_string($str,$this->_linkID);  

}else{  

return mysql_escape_string($str);  

}  

}

2、在公共文件中加入:
//防止双重转义  

if (get_magic_quotes_gpc()) {  

function stripslashes_deep($value){  

$value = is_array($value) ?  

array_map('stripslashes_deep', $value) :  

stripslashes($value);  

return $value;  

}  

$_POST = array_map('stripslashes_deep', $_POST);  

$_GET = array_map('stripslashes_deep', $_GET);  

$_COOKIE = array_map('stripslashes_deep', $_COOKIE);  

}

注:如果服务器开了转义,那么就经过thinkphp再次转义后,就会在程序中产生双重转义的Bug

经过修改后,我的网站程序后台录入就没什么问题了,看来大家以后如果有碰到使用Thinkphp时,注意如果服务器开启了过滤单引号或双引号的,可能就会跟ThinkPHP起冲突的了,所以加一层判断,就可以很好的解决这个问题了.

希望本文所述对大家的ThinkPHP框架程序设计有所帮助。

PHP 相关文章推荐
php pcntl_fork和pcntl_fork 的用法
Apr 13 PHP
PHP代码网站如何防范SQL注入漏洞攻击建议分享
Mar 01 PHP
PHP 实现explort() 功能的详解
Jun 20 PHP
php实现telnet功能示例
Apr 08 PHP
php的curl封装类用法实例
Nov 07 PHP
thinkphp实现上一篇与下一篇的方法
Dec 08 PHP
PHP中使用php5-ffmpeg撷取视频图片实例
Jan 07 PHP
Session 失效的原因汇总及解决丢失办法
Sep 30 PHP
实例简介PHP的一些高级面向对象编程的特性
Nov 27 PHP
PHP使用strstr()函数获取指定字符串后所有字符的方法
Jan 07 PHP
PHP接口并发测试的方法(推荐)
Dec 15 PHP
PHP sdk实现在线打包代码示例
Dec 09 PHP
php中ltrim()、rtrim()与trim()删除字符空格实例
Nov 25 #PHP
使用PHP Socket 编程模拟Http post和get请求
Nov 25 #PHP
PHP实现无限极分类图文教程
Nov 25 #PHP
php获取指定日期之间的各个周和月的起止时间
Nov 24 #PHP
Thinkphp搭建包括JS多语言的多语言项目实现方法
Nov 24 #PHP
thinkphp判断访客为手机端或PC端的方法
Nov 24 #PHP
ThinkPHP公共配置文件与各自项目中配置文件组合的方法
Nov 24 #PHP
You might like
如何做到多笔资料的同步
2006/10/09 PHP
PHP仿博客园 个人博客(1) 数据库与界面设计
2013/07/05 PHP
php实现的验证码文件类实例
2015/06/18 PHP
php实现的pdo公共类定义与用法示例
2017/07/19 PHP
Yii2 中实现单点登录的方法
2018/03/09 PHP
Laravel 模型关联基础教程详解
2019/09/17 PHP
jQuery 学习 几种常用方法
2009/06/11 Javascript
封装的原生javascript弹出层代码
2010/09/24 Javascript
自写简单JS判断是否已经弹出页面
2010/10/20 Javascript
鼠标滚轮控制网页横向移动实现思路
2013/03/22 Javascript
Javascript代码在页面加载时的执行顺序介绍
2013/05/03 Javascript
使用JS或jQuery模拟鼠标点击a标签事件代码
2014/03/10 Javascript
js中通过父级进行查找定位元素
2014/06/15 Javascript
基于Three.js插件制作360度全景图
2016/11/29 Javascript
jQuery实现复制到粘贴板功能
2017/02/11 Javascript
JavaScript纯色二维码变成彩色二维码
2020/07/23 Javascript
微信小程序实现顶部普通选项卡效果(非swiper)
2020/06/19 Javascript
JS实现匀加速与匀减速运动的方法示例
2017/09/04 Javascript
vue App.vue中的公共组件改变值触发其他组件或.vue页面监听
2019/05/31 Javascript
layui动态加载多表头的实例
2019/09/05 Javascript
vue el-table实现自定义表头
2019/12/11 Javascript
如何基于javascript实现贪吃蛇游戏
2020/02/09 Javascript
[01:11:15]VGJ.S vs Secret 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python基于opencv的图像压缩算法实例分析
2018/05/03 Python
利用python计算windows全盘文件md5值的脚本
2019/07/27 Python
python 怎样将dataframe中的字符串日期转化为日期的方法
2019/09/26 Python
CSS3 渐变(Gradients)之CSS3 径向渐变
2016/07/08 HTML / CSS
HTML5 解决苹果手机不能自动播放音乐问题
2017/12/27 HTML / CSS
全球速卖通俄罗斯站:AliExpress俄罗斯
2019/06/17 全球购物
写给保洁员表扬信
2014/01/08 职场文书
《植物妈妈有办法》教学反思
2014/02/25 职场文书
医学生毕业自我鉴定
2014/03/26 职场文书
监察局领导班子四风问题整改措施思想汇报
2014/10/05 职场文书
学院党的群众路线教育实践活动第一阶段情况汇报
2014/10/25 职场文书
大学生心理健康教育心得体会
2016/01/12 职场文书
导游词之海南天涯海角
2019/12/05 职场文书