//PHP签到代码 ,不用考滤几月几日,跨年跨月等情况。有问题可以提出
//控制器
public function sign(){ if($_GET['tag']=='in'){ $data=array( 'userId'=>$this->userId, 'sc_score'=>5, 'sc_detail'=>'签到+5分', 'sc_type'=>1 ); } $current=date('Y-m-d H:i:s',time()); $hasSign=M('sign')->where("userId={$this->userId}")->find(); $count=$hasSign['si_count']; if($hasSign){ $lastSignDay=strtotime("{$hasSign['si_time']}"); $lastSign=date('Y-m-d',$lastSignDay); $today=date('Y-m-d',time()); if($lastSign==$today){ echo "今天已签到,您已连续签到 <font color='green'> {$count} </font> 天,连续签到7天+50分!"; exit(); } $residueHour=24+24-date('H',$lastSignDay); //有效的签到时间 (签到当天剩余的小时+1天的时间) $formatHour=strtotime(date('Y-m-d H',$lastSignDay).':00:00');//签到当天 2014-12-07 18:00:00 $lastSignDate=strtotime("+{$residueHour}hour",$formatHour);//在2014-12-07 18:00:00 基础上+ 有效的签到时间 if(time()>$lastSignDate){ //当前时间 > 上一次签到时间 $count=1; }else{ $count=$count+1; } $sign=M('sign')->where("userId={$this->userId}")->save(array('si_time'=>$current,'si_count'=>$count)); //签到表 }else{ $sign=M('sign')->add(array('userId'=>$this->userId,'si_count'=>1)); //签到表 } if($sign){ M('score')->add($data); //积分表 if($count !=0 && !empty($count)){ if($count%7==0){ $data2=array( 'userId'=>$this->userId, 'sc_score'=>50, 'sc_detail'=>'连续签到7天,增送50积分', 'sc_type'=>1 ); M('score')->add($data2); //积分表 } } if($count>0){ echo "<font color='green'>签到成功,您已连续签到 <font color='red'> {$count} </font> 天,连续签到7天+50分!</font>"; }else{ echo "<font color='green'>签到成功</font>"; } }else{ echo '签到失败,请稍后重试!'; } }
Comments : 0