PHP每日签到及连续签到奖励实现示例

时间:2023-02-18 08:25:13

数据库字段

num 记录已经连续签到次数

times 记录签到的日期 格式年月日 如 20160101

PHP代码如下

<?php
//获取今天的日期
$today = date('Ymd');
//获取签到记录
$signInfo = M('table')->field('id,num,times')->where(array('uid' => session('uid')))->find(); if($signInfo['times'] == $today){//今天已签到过了
$this->ajaxReturn(array('info' => '今天已签到过了', 'status' => 0)); }elseif($signInfo['times'] == date('Ymd', strtotime('-1 day'))){//昨天已签到,连续签到处理
if ($signInfo['num'] == 29) {//连续签到30天,每30天清零
$num = 0;//连续签到次数
$point = 30;//额外奖励积分数
}elseif($signInfo['num'] == 20){//连续签到3周
$num = $signInfo['num'] + 1; $point = 20;
}elseif($signInfo['num'] == 13){//连续签到2周
$num = $signInfo['num'] + 1; $point = 15;
}elseif($signInfo['num'] == 6){//连续签到1周
$num = $signInfo['num'] + 1; $point = 10;
}else{
$num = $signInfo['num'] + 1; $point = 0;
}
//更新签到记录
$result = M('table')->save(array('uid' => session('uid'), 'num' => $num, 'times' => $today)); }else{//断签或未签到过,重新计数
$point = 0;
if ($signInfo['id']) {//有签到记录,更新记录信息
$result = M('table')->save(array('uid' => session('uid'), 'num' => 1, 'times' => $today));
}else{//无签到记录,添加一条记录
$result = M('table')->add(array('uid' => session('uid'), 'num' => 1, 'times' => $today));
}
} if ($result){
$points = $point + 3;//本次签到获得的总积分数 = 额外奖励 + 签到一次应得的积分数 此处为3分
$result = M()->execute('update users set total_point=total_point+' . $points . ',now_point=now_point+' . $points . ' where uid=' . session('uid'));
if($result){
$msg = '签到成功,获得3积分';
$msg .= $point > 0 ? '<br />连续签到' . ($num > 0 ? $num : 30) . '天,奖励' . $point . '积分' : '';
$this->ajaxReturn(array('info' => $msg, 'status' => 1));
}
}
$this->ajaxReturn(array('info' => '签到失败', 'status' => 0));

代码是根据ThinkPHP框架开发,在项目代码的基础上进行了修改,项目代码运行正常,修改后的上述代码没有实际运行过,只作为开发思路参考

PHP每日签到及连续签到奖励实现示例的更多相关文章

  1. PHP连续签到

    require "./global.php"; $act = isset($_GET['act']) ? $_GET['act'] : "error"; // ...

  2. PHP计算连续签到天数以及累计签到天数

    代码如下: /** * 统计连续签到天数以及累计签到天数 * @param string $user_long_id 用户ID * @return array 一维数组 */ function sig ...

  3. sqlserver查询连续签到天数

    create table #t(keyId int identity,actionDate datetime)insert into #t(actionDate) select distinct Cr ...

  4. sql -- 获取连续签到的用户列表

    签到表: 需求:统计连续签到的 用户 1.根据用户和日期分组 select user_name, sign_date from user_sign group by user_name, sign_d ...

  5. msql 计算连续签到天数

    刚刚写了一个签到计算天数的sql, 记录下来. 思路如下: 获取当前签到的最后时间(今天或昨天), 定义一个变量@i 对签到时间进行天数自减, 然后查询出当前记录签到时间是否与自减后的时间匹配.   ...

  6. PHP&plus;MYSQL&plus;AJAX实现每日签到功能

    一.web前端及ajax部分 文件index.html <html> <head> <meta http-equiv=Content-Type content=&quot ...

  7. 微信小程序和微信H5测试中易出Bug的点和注意事项

    一.微信小程序 易出Bug的点: 小程序的分享转发功能 背景:小程序项目开发基本完毕也都已经测过几轮,功能上基本没有什么问题,但是上线后却被客户发现通过分享转发小程序给别人,别人无法正常打开的情况 原 ...

  8. 基于【腾讯云函数】&sol;【GitHub Actions】&sol;【Docker】的每日签到脚本(支持多账号使用)

    每日签到集合 基于[腾讯云函数]/[GitHub Actions]/[Docker]的每日签到脚本 支持多账号使用 特别声明: 本仓库发布的脚本及其中涉及的任何解锁和解密分析脚本,仅用于测试和学习研究 ...

  9. PHP每日签到时怎么实现

    以淘宝网领取淘金币的签到系统为例:目标:第一天签到增加5个积分:第二天连续签到则增加8个积分:第三天连续签到,增加11个积分,第 四天连续签到,增加15个积分:第五天连续签到,增加19个积分:第六天连 ...

随机推荐

  1. js中对象 类 实例的区别 数据类型 创建对象

    类是对象的具体细分,实例是类中的一个具体事物. 基本数据类型和 引用数据类型 基本数据类型:numble string undefined null 引用数据类型:对象和函数 对象数据类型又细分为:对 ...

  2. 烂泥:gpg加解密软件学习

    本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb. 为什么要学习gpg呢?因为要在Linux下把一个邮箱的密码加密,不让其他人看到该邮箱真 ...

  3. IBM的IT战略规划方法论

    IBM的IT战略规划方法论 http://wenku.baidu.com/view/42489e21aaea998fcc220e92.html?re=view http://wenku.baidu.c ...

  4. 配置drbd高可用集群

    前期准备: 同步时间 (两个节点) 节点一(172.16.21.6) [root@stu21 heartbeat2]# ntpdate 172.16.0.1 31 Dec 20:59:25 ntpda ...

  5. 采购件不允许挂BOM

    应用 Oracle Bill Of   Materiel 层 Level Function 函数名 Funcgtion Name BOM_BOMFDBOM 表单名 Form Name BOMFDBOM ...

  6. Makefile学习&lpar;一&rpar;&lbrack;第二版&rsqb;

    简单介绍 1)make:利用 make 工具能够自己主动完毕编译工作.这些工作包含:假设仅改动了某几个源文件,则仅仅又一次编译这几个源文件[make通过比对对应的.c文件与.o文件的时间];假设某个头 ...

  7. html&sol;css&sol;javascript的含义、作用及理解

    HTML(HyperText Markup Language/超文本标记语言) 含义:HTML是一种用于创建网页的标准标记语言. 作用:页面内可以包含图片.链接,甚至音乐.程序等非文字元素. 理解:主 ...

  8. m序列生成电路

    m序列

  9. IntelliJ IDEA 2017版 spring-boot 2&period;0&period;3 部署war包项目和jar包项目

    1.建立项目 Java Controller package com.springboot.jsp.controller; import org.springframework.stereotype. ...

  10. WPF 内存泄漏优化经历

    最近公司有个CS客户端程序,有个登录界面,有个程序的主界面,程序支持注销功能,但是在注销后,客户端的内存一直以40M-50M的速度递增,因此猜测,应该是WPF程序出现了内存泄漏.下面主要记录优化内存泄 ...