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 相关文章推荐
建立动态的WML站点(三)
Oct 09 PHP
php echo()和print()、require()和include()函数区别说明
Mar 27 PHP
PHP 杂谈《重构-改善既有代码的设计》之三 重新组织数据
Apr 09 PHP
如何使用PHP实现javascript的escape和unescape函数
Jun 29 PHP
解决更换PHP5.4以上版本后Dedecms后台登录空白问题的方法
Oct 23 PHP
详解PHP实现执行定时任务
Dec 21 PHP
PHP实现上传图片到 zimg 服务器
Oct 19 PHP
PHP中include和require的区别实例分析
May 07 PHP
thinkPHP多表查询及分页功能实现方法示例
Jul 03 PHP
PHP检查网站是否宕机的方法示例
Jul 24 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式一图文详解
Apr 09 PHP
laravel admin实现分类树/模型树的示例代码
Jun 10 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
PHP include_path设置技巧分享
2011/07/03 PHP
Linux中用PHP判断程序运行状态的2个方法
2014/05/04 PHP
php查询及多条件查询
2017/02/26 PHP
php实现和c#一致的DES加密解密实例
2017/07/24 PHP
JS 自动安装exe程序
2008/11/30 Javascript
33种Javascript 表格排序控件收集
2009/12/03 Javascript
用JavaScript实现动画效果的方法
2013/07/20 Javascript
jQuery中:last选择器用法实例
2014/12/30 Javascript
解决Jquery向页面append新元素之后事件的绑定问题
2015/03/16 Javascript
JS动态修改表格cellPadding和cellSpacing的方法
2015/03/31 Javascript
JavaScript实现快速排序的方法
2015/07/31 Javascript
学习使用bootstrap基本控件(table、form、button)
2016/04/12 Javascript
深入理解vue $refs的基本用法
2017/07/13 Javascript
[38:41]2014 DOTA2国际邀请赛中国区预选赛 LGD VS CNB
2014/05/22 DOTA
vc6编写python扩展的方法分享
2014/01/17 Python
Python读取ini文件、操作mysql、发送邮件实例
2015/01/01 Python
python append、extend与insert的区别
2016/10/13 Python
用python3教你任意Html主内容提取功能
2018/11/05 Python
Linux下安装python3.6和第三方库的教程详解
2018/11/09 Python
python调用支付宝支付接口流程
2019/08/15 Python
40行Python代码实现天气预报和每日鸡汤推送功能
2020/02/27 Python
Python实现密钥密码(加解密)实例详解
2020/04/26 Python
Python+logging输出到屏幕将log日志写入文件
2020/11/11 Python
python re模块常见用法例举
2021/03/01 Python
详解HTML5将footer置于页面最底部的方法(CSS+JS)
2018/10/11 HTML / CSS
美国马匹用品和马钉购物网站:State Line Tack
2018/08/05 全球购物
J2EE包括哪些技术
2016/11/25 面试题
模范家庭事迹材料
2014/02/10 职场文书
雷锋精神演讲稿
2014/05/13 职场文书
2014国庆节商场促销活动策划方案
2014/09/16 职场文书
简易离婚协议书范本2014
2014/10/15 职场文书
2016年班主任培训心得体会
2016/01/07 职场文书
《葡萄沟》教学反思
2016/02/23 职场文书
检讨书怎么写?
2019/06/21 职场文书
Windows Server 2019 域控制器安装图文教程
2022/04/28 Servers
基于Python编写一个监控CPU的应用系统
2022/06/25 Python