手机
当前位置:查字典教程网 >编程开发 >php教程 >ThinkPHP入库出现两次反斜线转义及数据库类转义的解决方法
ThinkPHP入库出现两次反斜线转义及数据库类转义的解决方法
摘要:本文实例讲述了ThinkPHP入库出现两次反斜线转义及数据库类转义的解决方法。分享给大家供大家参考。具体方法如下:这种情况是在magic_q...

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

【ThinkPHP入库出现两次反斜线转义及数据库类转义的解决方法】相关文章:

phpmyadmin 数据库导入2048kb的解决办法

php输出全球各个时区列表的方法

php实现统计网站在线人数的方法

PHP file_get_contents函数读取远程数据超时的解决方法

php简单实现多字节字符串翻转的方法

PHP调用三种数据库的方法(1)

php实现将上传word文件转为html的方法

php简单实现快速排序的方法

PHP+shell实现多线程的方法

php命令行(cli)下执行PHP脚本文件的相对路径的问题解决方法

精品推荐
分类导航