表结构如上,
代码如下:
/**
* 计算当月连续登陆天数
*/
$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);