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

 更新时间:2014年11月25日 09:47:03   投稿:shichen2014  
这篇文章主要介绍了ThinkPHP提交表单时默认自动转义的解决方法,可解决针对单引号和双引号的自动转移问题,提供了两种解决方法供大家对比选择,具有一定的实用价值,需要的朋友可以参考下

本文实例讲述了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框架程序设计有所帮助。

相关文章

  • Thinkphp中Create方法深入探究

    Thinkphp中Create方法深入探究

    由于工作原因在thinkPHP的create()方法上遇到了问题,所以跟踪了create(),从而进一步探究了create()方法。 原来create()方法原来有两个参数,本文就此作简要说明,需要的朋友可以参考下
    2014-06-06
  • CodeIgniter删除和设置Cookie的方法

    CodeIgniter删除和设置Cookie的方法

    这篇文章主要介绍了CodeIgniter删除和设置Cookie的方法,涉及CodeIgniter操作cookie的技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • ThinkPHP中自定义错误页面和提示页面实例

    ThinkPHP中自定义错误页面和提示页面实例

    这篇文章主要介绍了ThinkPHP中自定义错误页面和提示页面的方法,以一个完整的实例形式详细讲述了ThinkPHP实现自定义错误提示与跳转页面的方法,是非常常见的实用技巧,需要的朋友可以参考下
    2014-11-11
  • ThinkPHP6.0前置、后置中间件区别

    ThinkPHP6.0前置、后置中间件区别

    中间件的主要应用场景可以包括对HTTP请求的数据过滤、权限检测、请求拦截等行为,本文主要介绍了ThinkPHP6.0前置、后置中间件区别,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • laravel 操作数据库常用函数的返回值方法

    laravel 操作数据库常用函数的返回值方法

    今天小编就为大家分享一篇laravel 操作数据库常用函数的返回值方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • PHP实现新型冠状病毒疫情实时图的实例

    PHP实现新型冠状病毒疫情实时图的实例

    在本篇文章小编给大家分享一篇关于PHP新型冠状病毒肺炎疫情实时图源码内容,有兴趣的朋友们可以本地测试下。
    2020-02-02
  • php连接mssql数据库的几种方法

    php连接mssql数据库的几种方法

    数据库查询不外乎4个步骤,1、建立连接。2、输入查询代码。3、建立查询并取出数据。4、关闭连接。 php连接mssql数据库有几个注意事项,尤其mssql的多个版本、32位、64位都有区别。
    2013-02-02
  • 宝塔 php修改了php.ini配置不生效的问题及解决方法

    宝塔 php修改了php.ini配置不生效的问题及解决方法

    最近在使用hypref,php的版本是7.4,服务器linux,用宝塔安装完php,并装完swoole插件后,安装了swoole后,需要在php.ini中修改一下配置文件,本文给大家分享宝塔 php修改了php.ini配置不生效的问题及解决方法,感兴趣的朋友一起看看吧
    2023-09-09
  • 详解Yii2高级版引入bootstrap.js的一个办法

    详解Yii2高级版引入bootstrap.js的一个办法

    本篇文章主要介绍了详解Yii2高级版引入bootstrap.js的一个办法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-03-03
  • iOS+PHP注册登录系统 PHP部分(上)

    iOS+PHP注册登录系统 PHP部分(上)

    这篇文章主要介绍了iOS+PHP注册登录系统的PHP部分,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12

最新评论