七天签到记录,断掉重新开始

本文详细介绍了使用PHP实现签到系统的具体代码,包括签到功能的实现、积分累计及更新等核心逻辑。通过分析代码,读者可以了解如何检查用户是否已经签到、如何更新用户的签到次数和积分,以及如何在数据库中记录签到信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 // 签到
    public function member_Sign(){
            $last_sign = $this->models('member')->get_last_sign();
            $sign_count = $last_sign ? $last_sign['sign_count'] : 0;
            if ($sign_count > 0 && date('Y-m-d', $last_sign['sign_time']) == date('Y-m-d')) {
                $this->msg(1, $clock,'今日已打卡');
            }
            $next_count = $sign_count + 1;
            $next_count > 7 and $next_count = 0;
            $this->db->insert(SITE_ID . '_member_sign', array(
                'uid' => $this->uid,
                'title' => '今日'.$this->member['name'].'打卡',
                'status' => 1,
                'sign_time' => SYS_TIME,
                'sign_count' => $next_count,
                'score' => ($sign_count + 1)*5
            ));
            $id = $this->db->insert_id();
            $jifen = ($sign_count + 1) * 5;
            
            //打卡加积分
            $this->db->set('experience','experience+'.$jifen,false)->where('uid',$this->uid)->update('member');
            $id > 0 ?  $this->msg(0,'签到成功') : $this->msg(1,'网络好像开小差了-->');
            
    }

MODELS 内记录

//获取最后一次签到
    public function get_last_sign() {
        return $this->db->select("uid,status,sign_count,sign_time")
                          ->where('uid', $this->uid)
                          ->where('sign_time >=', strtotime('-1 day today'))
                          ->where('status', 1)
                          ->order_by('sign_time desc')
                          ->limit(1)
                          ->get(SITE_ID . '_member_sign')
                          ->row_array();
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值