导航

[【Bugs反馈】] 积分算的不对?(已答复)

2015-08-12
#11
自古7楼出真理
2015-08-12
#12
我也是醉了。T00ls用的是discuz,看看代码不就知道了。
function updatesession() {
        if(!empty($GLOBALS['sessionupdated'])) {
                return TRUE;
        }

        global $db, $tablepre, $sessionexists, $sessionupdated, $sid, $onlineip, $discuz_uid, $discuz_user, $timestamp, $lastactivity, $seccode,
                $pvfrequence, $spageviews, $lastolupdate, $oltimespan, $onlinehold, $groupid, $styleid, $invisible, $discuz_action, $fid, $tid;

        $fid = intval($fid);
        $tid = intval($tid);

        if($oltimespan && $discuz_uid && $lastactivity && $timestamp - ($lastolupdate ? $lastolupdate : $lastactivity) > $oltimespan * 60) {
                $lastolupdate = $timestamp;
                $db->query("UPDATE {$tablepre}onlinetime SET total=total+'$oltimespan', thismonth=thismonth+'$oltimespan', lastupdate='$timestamp' WHERE uid='$discuz_uid' AND lastupdate<='".($timestamp - $oltimespan * 60)."'");
                if(!$db->affected_rows()) {
                        $db->query("INSERT INTO {$tablepre}onlinetime (uid, thismonth, total, lastupdate)
                                VALUES ('$discuz_uid', '$oltimespan', '$oltimespan', '$timestamp')", 'SILENT');
                }
        } else {
                $lastolupdate = intval($lastolupdate);
        }

        if($sessionexists == 1) {
                if($pvfrequence && $discuz_uid) {
                        if($spageviews >= $pvfrequence) {
                                $pageviewsadd = ', pageviews=\'0\'';
                                $db->query("UPDATE {$tablepre}members SET pageviews=pageviews+'$spageviews' WHERE uid='$discuz_uid'", 'UNBUFFERED');
                        } else {
                                $pageviewsadd = ', pageviews=pageviews+1';
                        }
                } else {
                        $pageviewsadd = '';
                }
                $db->query("UPDATE {$tablepre}sessions SET uid='$discuz_uid', username='$discuz_user', groupid='$groupid', styleid='$styleid', invisible='$invisible', action='$discuz_action', lastactivity='$timestamp', lastolupdate='$lastolupdate', seccode='$seccode', fid='$fid', tid='$tid' $pageviewsadd WHERE sid='$sid'");
        } else {
                $ips = explode('.', $onlineip);

                $db->query("DELETE FROM {$tablepre}sessions WHERE sid='$sid' OR lastactivity<($timestamp-$onlinehold) OR ('$discuz_uid'<>'0' AND uid='$discuz_uid') OR (uid='0' AND ip1='$ips[0]' AND ip2='$ips[1]' AND ip3='$ips[2]' AND ip4='$ips[3]' AND lastactivity>$timestamp-60)");
                $db->query("INSERT INTO {$tablepre}sessions (sid, ip1, ip2, ip3, ip4, uid, username, groupid, styleid, invisible, action, lastactivity, lastolupdate, seccode, fid, tid)
                        VALUES ('$sid', '$ips[0]', '$ips[1]', '$ips[2]', '$ips[3]', '$discuz_uid', '$discuz_user', '$groupid', '$styleid', '$invisible', '$discuz_action', '$timestamp', '$lastolupdate', '$seccode', '$fid', '$tid')", 'SILENT');
                if($discuz_uid && $timestamp - $lastactivity > 21600) {
                        if($oltimespan && $timestamp - $lastactivity > 86400) {
                                $query = $db->query("SELECT total FROM {$tablepre}onlinetime WHERE uid='$discuz_uid'");
                                $oltimeadd = ', oltime='.round(intval($db->result($query, 0)) / 60);
                        } else {
                                $oltimeadd = '';
                        }
                        $db->query("UPDATE {$tablepre}members SET lastip='$onlineip', lastvisit=lastactivity, lastactivity='$timestamp' $oltimeadd WHERE uid='$discuz_uid'", 'UNBUFFERED');
                }
        }

        setlogininfo();
        $sessionupdated = 1;
}
总的而言,十分钟更新一次在线时间。

用户信息86400秒(24小时)更新一次总在线时间。而楼主的截图space页面实时显示总时间。

楼主的反馈其实是在线总时间没更新。楼主21小时没计入总时间,刚刚已经自动更新了。

不过也看出来了,一天时间内,楼主居然挂了21小时,显然是楼主做了什么刷新机制,一直在刷在线时间。

这个又反应出在线时间计入总积分的弊端。

最近研究下,是否该取消在线时间带入计算公式。
T00.ls:https://t00.ls/t00ls
T00ls官方Telegram公开频道:https://t.me/T00lsCom
T00ls官方Telegram群:https://t.me/T00lsTB
T00ls官方Twitter:https://twitter.com/T00lsCom
2015-08-12
#13
个人觉得在线时间每天可以设置一个合理的上限,这样就能防止刷时间的情况了
。
2015-08-12
#14
回复 12# t00ls管理团队01


最好不要取消,像13楼说的那样设置上限感觉更合理一些
2015-08-12
#15
有时间纠结这问题不如去发看下discuz代码说不定还能挖个好bug
操千曲而后晓声,观千剑而后识器。
2015-08-13
#16
说的很有道理啊。我也是没算懂
大王派我来下巡山
2015-08-13
#17
回复 14# KevAxe



   - -那个积分如果要算上在线时间  要等积分更新  你把号退出了,再上积分就正常了
为什么我知道?
请看我的在线时间
2015-08-13
#18
@t00ls管理团队01 还是算上在线时间吧,加个限制就行,比如一天最多多少个小时
2015-08-13
#19
帮我算算对不对.
2015-08-14
#20
不要太在意这个啦,积分就是个摆设