关于discuz 7.0用户最后发表时间更新bug
2009年9月11日
没有评论
最近论坛在搞抢楼,有用户被判定一分钟发了50贴是机器灌水行为,我好想觉得后台设置过发帖时间限制为10秒的,也就是说1分钟最多发6贴。就自己研究了下,发现自从升级到dz7以来用户的最后更新时间就没更新过,而发帖限制是靠 现在时间-发帖限制时间 和 最后发表时间去比对的,所以导致发帖时间限制的设置形同虚设。所以又仔细看了下更新用户最后发表时间相关代码。
首先来看一段源代码代码
1 2 3 4 5 6 | $self = $creditnotice && $uidarray == $discuz_uid; …… $lastpostadd = $self ? ", lastpost='$timestamp'" : ''; …… …… $db->query("UPDATE {$tablepre}members SET posts=posts+('$operator$posts') $lastpostadd $creditsadd2 WHERE uid IN ($uids)", 'UNBUFFERED'); |
这里看到要 $self=1 才会把更新最后发表时间的 lastpost=’$timestamp’ 加到update的sql里面,而$self=1的话除了判断下uid之外的话还有个参数 $creditnotice 必需也等于1才行。
也就是必须要打开 dz7 后台 界面 全局里面的积分变动提示才会更新用户最后发表时间。
我想这应该算是个bug把