如何改这段thinkphp签到代码
程序员文章站
2022-03-17 21:41:24
...
$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 '签到失败,请稍后重试!';
}
}
上一篇: php岗位职责是什么