PHP每日签到及连续签到奖励实现示例
数据库字段
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每日签到及连续签到奖励实现示例的更多相关文章
- PHP连续签到
require "./global.php"; $act = isset($_GET['act']) ? $_GET['act'] : "error"; // ...
- PHP计算连续签到天数以及累计签到天数
代码如下: /** * 统计连续签到天数以及累计签到天数 * @param string $user_long_id 用户ID * @return array 一维数组 */ function sig ...
- sqlserver查询连续签到天数
create table #t(keyId int identity,actionDate datetime)insert into #t(actionDate) select distinct Cr ...
- sql -- 获取连续签到的用户列表
签到表: 需求:统计连续签到的 用户 1.根据用户和日期分组 select user_name, sign_date from user_sign group by user_name, sign_d ...
- msql 计算连续签到天数
刚刚写了一个签到计算天数的sql, 记录下来. 思路如下: 获取当前签到的最后时间(今天或昨天), 定义一个变量@i 对签到时间进行天数自减, 然后查询出当前记录签到时间是否与自减后的时间匹配. ...
- PHP+MYSQL+AJAX实现每日签到功能
一.web前端及ajax部分 文件index.html <html> <head> <meta http-equiv=Content-Type content=" ...
- 微信小程序和微信H5测试中易出Bug的点和注意事项
一.微信小程序 易出Bug的点: 小程序的分享转发功能 背景:小程序项目开发基本完毕也都已经测过几轮,功能上基本没有什么问题,但是上线后却被客户发现通过分享转发小程序给别人,别人无法正常打开的情况 原 ...
- Redis入门到实战
一.Redis基础 Redis所有的命令都可以去官方网站查看 1.基本命令 keys * 查找所有符合给定模式pattern(正则表达式)的 key .可以进行模糊匹配 del key1,key2,. ...
- 基于【腾讯云函数】/【GitHub Actions】/【Docker】的每日签到脚本(支持多账号使用)
每日签到集合 基于[腾讯云函数]/[GitHub Actions]/[Docker]的每日签到脚本 支持多账号使用 特别声明: 本仓库发布的脚本及其中涉及的任何解锁和解密分析脚本,仅用于测试和学习研究 ...
随机推荐
- 用PS画一个齿轮
以前只会画圆画方,这没技术含量.今天学了一个稍难一点的,画一个齿轮.图形有圆也有方.以下描述如何画出来的. 一.打开PS准备一画布,画一矩形并且填充颜色. 二.编辑->自由变换(CTRL+T), ...
- find系列之xargs命令
xargs的功能--> 将标准输入转换为命令行参数,供后面的命令调用,但是一次只能依据-d和-n限定的行数来推送一行 xargs的作用--> 使那些不能利用stdin的命令 ...
- 常见的SQL字符串函数
1.LEN:计算字符串的长度(字符的个数) select len('哈哈hello') 返回长度为7 2.datalength();计算字符串所占用的字节数,不属于字符串函数 select DATAL ...
- checkbox选中问题
<head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312&qu ...
- tomcat 项目部署问题
我本地Tomcat版本:Apache Tomcat/8.0.3.0 服务器端:Apache Tomcat/6.0.37 JVM都是:1.7.0_40-b43 之前项目运行正常,在我更新了一些模块后,重 ...
- Struts2安装与简单部署实例
打开http://struts.apache.org/网站,下载strut2 版本选择: Full Distribution: Struts2完整版 建议下载该项(此版包括以下4项): Example ...
- 用VS2013+VELT-0.1.4进行海思平台 Linux内核 的开发
快乐虾 http://blog.csdn.net/lights_joy/(QQ群:Visual EmbedLinux Tools 375515651) 欢迎转载,但请保留作者信息 本文仅适用于vs20 ...
- poj 1753 Flip Game(bfs状态压缩 或 dfs枚举)
Description Flip game squares. One side of each piece is white and the other one is black and each p ...
- IOS设计模式学习(8)适配器
1 前言 在面向对象软件设计中,有时候我们想把有用而经过精心测试的类,用于应用程序的其他新领域.但是,新功能需要新接口,而新接口与要复用的现有类不一致的情况非常普遍.我们不想为新的接口而重写可靠的类. ...
- 【Heritrix基础教程之3】Heritrix的基本架构
Heritrix可分为四大模块: 1.控制器CrawlController 2.待处理的uri列表 Frontier 3.线程池 ToeThread 4.各个步骤的处理器 (1)Pre-fetch ...