当前位置: 首页 > 编程笔记 >

ThinkPHP入库出现两次反斜线转义及数据库类转义的解决方法

郤旭东
2023-03-14
本文向大家介绍ThinkPHP入库出现两次反斜线转义及数据库类转义的解决方法,包括了ThinkPHP入库出现两次反斜线转义及数据库类转义的解决方法的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了ThinkPHP入库出现两次反斜线转义及数据库类转义的解决方法。分享给大家供大家参考。具体方法如下:

这种情况是在 magic_quotes_gpc 开启的情况下发生的。原因是thinkphp在入库的时候没有判断 magic_quotes_gpc 是否开启,不管三七二十一地进行了转义处理。
解决办法是在入口文件增加如下代码则可:

if (!get_magic_quotes_gpc()) {  

    function addslashes_deep($value) {   

        $value = is_array($value) ?  

            array_map('addslashes_deep', $value) :  

            addslashes($value);  

        return $value;  

   }  

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

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

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

   $_REQUEST = array_map('addslashes_deep', $_REQUEST);  

}

有人这样修改DbMysql.class.php中的转义函数:

public function escape_string($str) {  

if (get_magic_quotes_gpc()) {  

return $str;  

}  

if($this->_linkID) {  

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

}else{  

return mysql_escape_string($str);  

}  

}
 

其实这种方法并不可取!因为如果魔术函数on时,而$str又不是post或get得来(比如读取文本、数据库),它还是没加反斜线。
所以我不管$str是否已经被转义,一律先去除转义,然后再加上转义。这样就避免了二次转义,也避免了遗漏转义。
下面是我的修改方法:

public function escape_string($str) {  

$str = stripslashes($str);  

if($this->_linkID) {  

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

}else{  

return mysql_escape_string($str);  

}  

}

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

 类似资料:
  • 本文向大家介绍JS实现HTML标签转义及反转义,包括了JS实现HTML标签转义及反转义的使用技巧和注意事项,需要的朋友参考一下 简单说一下业务场景,前台用户通过input输入内容,在离开焦点时,将内容在div中显示。 这时遇到一个问题,如果用户输入了html标签,则在div显示中,标签被解析。 由于是纯前端操作,不涉及后端,因此需要通过js对输入内容进行转义。 这里提供一个非常简单有效的转义方案,

  • 本文向大家介绍ThinkPHP实现多数据库连接的解决方法,包括了ThinkPHP实现多数据库连接的解决方法的使用技巧和注意事项,需要的朋友参考一下 ThinkPHP实现连接多个数据的时候,如果数据库在同一个服务器里的话只需要这样定义模型: 然后就可以像D("Members");这样实例化模型,像普通模型那样操作了。 但后来发现他的数据库在两个不同的服务器,这样上面的方法就不行了。 这时候就需要使用

  • 问题内容: 我经营一个摄影网站。摄影师将其“ by_line”作为“ Some name / ourwebsite.com”。 我有一个用于大多数查询的DSL,使用“条件”将“过滤”查询串在一起,这在90%的情况下都非常有效,但是在这种情况下,我通过这样的查询返回的结果为零(请注意我如何尝试逃脱正斜线): 我正在使用Elasticsearch 1.5.2版 当我查看此URL的映射时 这是一个示例记

  • 本文向大家介绍详解json串反转义(消除反斜杠),包括了详解json串反转义(消除反斜杠)的使用技巧和注意事项,需要的朋友参考一下 JSon串在被串行化后保存在文件中,读取字符串时,是不能直接拿来用JSON.parse()解析为JSON  对象的。因为它是一个字符串,不是一个合法的JSON对象格式。例如下面的JSON串保存在文件中,读出来不能直接解析: “{\"resourceId\":\"dfe

  • 我需要在URL中包含一个斜线来访问RabbitMQ API,并且我正在尝试使用获取数据: 当我将替换为时,我可以在请求描述符中看到已更改为,因此我得到了未找到的响应。 我尝试了以下选项: •-WebClient更改为,Rabbit返回404。 如何使用WebClient将保存在url中?

  • 本文向大家介绍ThinkPHP实现转换数据库查询结果数据到对应类型的方法,包括了ThinkPHP实现转换数据库查询结果数据到对应类型的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了ThinkPHP实现转换数据库查询结果数据到对应类型的方法。分享给大家供大家参考,具体如下: 最近使用 ThinkPHP3.2.3 进行 API 开发,发现 ThinkPHP3.x 查询数据库返回所有字段值