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 array_map array_multisort 高效处理多维数组排序
Jun 11 PHP
纯php打造的tab选项卡效果代码(不用js)
Dec 29 PHP
PHP中创建图像并绘制文字的例子
Nov 19 PHP
php计算税后工资的方法
Jul 28 PHP
php中二维数组排序问题方法详解
Aug 28 PHP
学习php设计模式 php实现原型模式(prototype)
Dec 07 PHP
php获取一定范围内取N个不重复的随机数
May 28 PHP
thinkphp3.2.3 分页代码分享
Jul 28 PHP
微信支付的开发流程详解
Sep 13 PHP
PHP实现求解最长公共子串问题的方法
Nov 17 PHP
在Laravel中使用MongoDB的方法示例
Nov 11 PHP
thinkphp5 + ajax 使用formdata提交数据(包括文件上传) 后台返回json完整实例
Mar 02 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
ThinkPHP V2.2说明文档没有说明的那些事实例小结
2015/07/01 PHP
Laravel框架实现调用百度翻译API功能示例
2019/05/30 PHP
使用javascript访问XML数据的实例
2006/12/27 Javascript
js 兼容多浏览器的回车和鼠标焦点事件代码(IE6/7/8,firefox,chrome)
2010/04/14 Javascript
按下回车键指向下一个位置的一个函数代码
2014/03/10 Javascript
javascript实现淡蓝色的鼠标拖动选择框实例
2015/05/09 Javascript
原生javascript实现addClass,removeClass,hasClass函数
2016/02/25 Javascript
javascript html5实现表单验证
2016/03/01 Javascript
JavaScript中循环遍历Array与Map的方法小结
2016/03/12 Javascript
jQuery插件编写步骤详解
2016/06/03 Javascript
如何编写一个完整的Angular4 FormText 组件
2017/11/18 Javascript
javascript获取图片的top N主色值方法详解
2018/01/26 Javascript
JavaScript门道之标准库
2018/05/26 Javascript
mocha的时序规则讲解
2019/02/16 Javascript
javascript sort()对数组中的元素进行排序详解
2019/10/13 Javascript
JavaScript 双向链表操作实例分析【创建、增加、查找、删除等】
2020/04/28 Javascript
浅谈Vue 函数式组件的使用技巧
2020/06/16 Javascript
[54:33]2018DOTA2亚洲邀请赛小组赛 A组加赛 Liquid vs Optic
2018/04/03 DOTA
下载给定网页上图片的方法
2014/02/18 Python
python自动查询12306余票并发送邮箱提醒脚本
2018/05/21 Python
python版本五子棋的实现代码
2018/12/11 Python
python 提取key 为中文的json 串方法
2018/12/31 Python
Python如何转换字符串大小写
2020/06/04 Python
Django 用户认证Auth组件的使用
2020/11/30 Python
python 模拟登陆github的示例
2020/12/04 Python
大专学生推荐信范文
2013/11/19 职场文书
一年级班主任寄语
2014/01/19 职场文书
团日活动总结怎么写
2014/06/25 职场文书
2015毕业生实习工作总结
2014/12/12 职场文书
苏州园林导游词
2015/02/03 职场文书
淮阳太昊陵导游词
2015/02/10 职场文书
安全教育观后感
2015/06/17 职场文书
2016年三八节红领巾广播稿
2015/12/17 职场文书
2019年教师节活动策划方案
2019/09/09 职场文书
2019年关于小学生课外阅读情况的分析报告
2019/12/02 职场文书
springboot + mongodb 通过经纬度坐标匹配平面区域的方法
2021/11/01 MongoDB