平平博客平平博客

平平

ping@setbug.com

平平网络setbug.com

文章数
31753
评论数
3056
浏览数
9944855
平平
ping@setbug.com
平平网络setbug.com

Emlog6.0标签不存在提示SQL执行错误的解决办法

网站教程2020-03-09 3194  0 
摘要:平时可能会有删标签的习惯,有网站收录了删掉的标签,访客访问这个链接EMLOG6.0就会报S...
平时可能会有删标签的习惯,有网站收录了删掉的标签,访客访问这个链接EMLOG6.0就会报SQL语句执行错误。

如果标签不存在就会报SQL语句执行错误,会出现以下提示:

SQL语句执行错误: SELECT `gid` FROM `emlog_tag` WHERE `tid` =
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1


报错过程:通过访问标签链接路由分配到tag_controller.php控制器,控制器中执行到函数getTagByName,直接tag_model.php中大概47行函数

getTagByName中有2个函数getIdFromName和getTagById,getIdFromName会出现false的情况,getTagById没考虑到这种情况导致的。然后根据tag_controller.php之后的情况,修改函数getTagByName最为合适。

建议修复,因为SQL报错会被一些安全网站或者搜索引擎识别为安全漏洞,减低权限。


修复方法:

include/model/tag_model.php中大概47行函数为
function getTagByName($tagName) {
        $tagId = $this->getIdFromName($tagName);
	return $this->getTagById($tagId); 
    }

修改为
function getTagByName($tagName) {
        $tagId = $this->getIdFromName($tagName);
		if ($tagId) {
			return $this->getTagById($tagId); 
		}else{
			return false;
		}	
    }
继续阅读
标签:emlog标签sql报错修复bug
写代码真的很累!麻烦点个赞,评论一下,然后分享给自己的小伙伴!
打赏
海报分享
发表评论
表情
快捷
私密

右滑验证