XIUNOBBS板块页获取不到页码导致数据库1064错误解决办法
我们正常使用TAG筛选时URL应该是/forum-1-1.htm?tagids=1这样的,当有人恶意使用/forum-1-0.htm?tagids=1访问的时候,由于找不到页码导致SQL查询起始数字变成-20,从而导致数据库报1064错误,这个错误可以从/log/db_error.php查看
SQL:SELECT tid FROM bbs_tag_thread WHERE tagid="2" ORDER BY tid DESC LIMIT -20, 20
errno: 1064,
errstr: 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 "-20, 20" at line 1
修复解决办法很简单,当$page为空的时候,赋予$page一个默认值,
加一个钩子 forum_top_list_before.php即可解决。
<?php exit;
empty($page) AND $page = 1;
?>
或者直接打开/route/forum.php
在$page = param(2, 1);下面添加如下代码即可。
empty($page) AND $page = 1;
PS:建议使用钩子,尽量不要修改系统文件。