php (thinkPHP)计算连续登陆天数

表结构如上,

代码如下:

/**
 * 计算当月连续登陆天数
 */
$smonthtime=strtotime(date("Y-m-01")); //当月第一天
$emonthtime=strtotime("+ 1 month",$smonthtime);//当月最后一天一天
$sdaytime=strtotime(date("Y-m-d",time()));//当天开始时间

$user = M('user')->field('logintime,lastlogintime,logindays')->where("id=3")->find();
if( $user['lastlogintime'] < $sdaytime ) { //如果是当天第一次登陆

    $logindays = intval($user['logindays']);

    if ($user['lastlogintime'] > $smonthtime && $user['lastlogintime'] < $emonthtime) { //上次登陆在本月
        $datetime1 = new \DateTime(date('Y-m-d', $user['lastlogintime']));
        $datetime2 = new \DateTime(date('Y-m-d', $user['logintime']));
        $interval = $datetime1->diff($datetime2);//和上次登陆相差天数
        $diffday = $interval->format('%d');
        if ($diffday == 1) { //如果相差1天,则为连续登陆
            $logindays += 1;
        } else {  //不是连续登陆,重置连续登陆天数为1
            $logindays = 1;
        }
    } else { //上次登陆时间不是在本月,重置连续登陆天数为1
        $logindays = 1;
    }
}
    M('user')->where("id=3")->setField("logindays",$logindays);

猜你喜欢

转载自blog.csdn.net/xxs18326183038/article/details/79637353