$residueHour=24+24-date('H',$lastSignDay); $formatHour=strtotime(date('Y-m-d H',$lastSignDay).':00:00'); $lastSignDate=strtotime("+{$residueHour}hour",$formatHour);
回複內容:
$residueHour=24+24-date('H',$lastSignDay); $formatHour=strtotime(date('Y-m-d H',$lastSignDay).':00:00'); $lastSignDate=strtotime("+{$residueHour}hour",$formatHour);
public function sign(){ //每日簽到 $this->check_login(); $data=array( 'userId'=>$this->memberID, 'sc_score'=>1, 'sc_detail'=>'簽到+1', 'sc_type'=>1 ); $dao=M('sign');//執行個體化sign對象 $current=date('Y-m-d H:i:s',time()); $hasSign=$dao->where("userId={$this->memberID}")->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 "今天已簽到,您已連續簽到 {$count} 天,連續簽到5天每天+5元代金券!"; 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=$dao->where("userId={$this->memberID}")->save(array('si_time'=>$current,'si_count'=>$count)); //簽到表 }else{ $sign=$dao->add(array('userId'=>$this->memberID,'si_count'=>1)); //簽到表 $count=1; } if($sign){ //第一天簽到+1 第二天簽到+2 第三天簽到+3 第四天簽到+4 第五天+5 連續5天每天+5 switch ($count){ case 1: $sc_score=1; break; case 2: $sc_score=2; break; case 3: $sc_score=3; break; case 4: $sc_score=4; break; default: $sc_score=5; } $dao->where("userId={$this->memberID}")->setInc('coin',$sc_score); //簽到金額累加 $coin=$dao->where("userId={$this->memberID}")->field('coin')->find(); if($coin['coin']>=20){ $dao->where("userId={$this->memberID}")->setDec('coin',20);//如果滿20將產生一張20的代金券 $this->insertCoupon('會員簽到代金券',20,$this->memberID); } $data=array( 'userId'=>$this->memberID, 'sc_score'=>$sc_score, 'sc_detail'=>'簽到+'.$sc_score, 'sc_type'=>1 ); M('score2')->add($data); //積分表 if($count>0){ echo "您今天已成功簽到,成功領取{$sc_score}元代金券,其中連續簽到 {$count} 天"; }else{ echo "簽到成功"; } }else{ echo '簽到失敗,請稍後重試!'; } }