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+MYSQL的文章管理系统(二)
Oct 09 PHP
PHP 数组实例说明
Aug 18 PHP
php提示Call-time pass-by-reference has been deprecated in的解决方法[已测]
May 06 PHP
基于php socket(fsockopen)的应用实例分析
Jun 02 PHP
CodeIgniter框架提示Disallowed Key Characters的解决办法
Apr 21 PHP
php中curl、fsocket、file_get_content三个函数的使用比较
May 09 PHP
php实现的Captcha验证码类实例
Sep 22 PHP
谈谈PHP中substr和substring的正确用法及相关参数的介绍
Dec 16 PHP
thinkPHP5.0框架独立配置与动态配置方法
Mar 17 PHP
Laravel 中使用 Vue.js 实现基于 Ajax 的表单提交错误验证操作
Jun 30 PHP
解决Laravel无法使用COOKIE和SESSION的问题
Oct 16 PHP
php去除deprecated的实例方法
Nov 17 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 手机归属地查询 api
2010/02/08 PHP
php一些错误处理的方法与技巧总结
2013/08/10 PHP
PHP中session跨子域的三种实现方法
2016/07/25 PHP
ThinkPHP实现登录退出功能
2017/06/29 PHP
JQuery toggle使用分析
2009/11/16 Javascript
jquery 插件实现图片延迟加载效果代码
2010/02/06 Javascript
利用JS自动打开页面上链接的实现代码
2011/09/25 Javascript
使用iframe window的scroll方法控制iframe页面滚动
2014/03/05 Javascript
JavaScript实现对下拉列表值进行排序的方法
2015/07/15 Javascript
JavaScript对Cookie进行读写操作实例
2015/07/25 Javascript
js控制TR的显示隐藏
2016/03/04 Javascript
js 求时间差的实现代码
2016/04/26 Javascript
Javacript中自定义的map.js  的方法
2017/11/26 Javascript
javascript实现循环广告条效果
2017/12/12 Javascript
ES6的解构赋值实例详解
2019/05/06 Javascript
vue打开其他项目页面并传入数据详解
2020/11/25 Vue.js
使用Python生成url短链接的方法
2015/05/04 Python
Python实现的概率分布运算操作示例
2017/08/14 Python
python实现读取大文件并逐行写入另外一个文件
2018/04/19 Python
Python实现的爬取百度贴吧图片功能完整示例
2019/05/10 Python
Python动态语言与鸭子类型详解
2019/07/01 Python
Python 安装 virturalenv 虚拟环境的教程详解
2020/02/21 Python
配置python的编程环境之Anaconda + VSCode的教程
2020/03/29 Python
Python读入mnist二进制图像文件并显示实例
2020/04/24 Python
python 如何调用 dubbo 接口
2020/09/24 Python
HTML5地理定位_动力节点Java学院整理
2017/07/12 HTML / CSS
美国女孩服装购物网站:Justice
2017/03/04 全球购物
2014村务公开实施方案
2014/02/25 职场文书
2014年学习雷锋活动总结
2014/03/01 职场文书
高中生学习计划书
2014/09/15 职场文书
中学生运动会新闻稿
2014/09/24 职场文书
法制主题班会教案
2015/08/13 职场文书
python 三边测量定位的实现代码
2021/04/22 Python
SQL实现LeetCode(197.上升温度)
2021/08/07 MySQL
node快速搭建后台的实现步骤
2022/02/18 NodeJs
了解MySQL查询语句执行过程(5大组件)
2022/08/14 MySQL