emlog6随便访问一个不存在的标签链接,例如:https://emlog.cn/tag/emlog
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报错会被一些安全网站或者搜索引擎识别为安全漏洞,减低权限。
修复方法:
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; } }
内容来源于:星知苑