Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >ThinkPHP连续签到小案例

ThinkPHP连续签到小案例

作者头像
思梦php
发布于 2018-03-09 03:18:42
发布于 2018-03-09 03:18:42
1.2K00
代码可运行
举报
文章被收录于专栏:PHP实战技术PHP实战技术
运行总次数:0
代码可运行

小伙伴们平时做网站开发的时候,是不是也遇到过会员连续签到送积分,比如我有一个加积分的规则是针对连续签到的,那么我们在实现这个功能的时候,我们面对的有一下几点注意:

(1)连续签到,次数要累加,这就涉及到两个时间戳之间的判断

(2)是否是本月的的签到,当然这点话,两个时间戳判断也就解决了,但是也要注意这个地方

(3)连续就加1,反之就清0,还有就是之前没签到就生成一条签到的记录!

下面我就贴出一段签到的实现代码,欢迎大家一起进步学习! 表结构

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**连续签到的实现方式*/
     public function signList(){
         /**先查到是否有这个用户*/
         $m_id = $_GET['m_id'];
         $sign = D('Sign')->where(array("m_id"=>$m_id))->limit(0)->find();
         /**如果有就进行判断时间差,然后处理签到次数*/
         if($sign){
             /**昨天的时间戳时间范围*/
             $t = time();
             $last_start_time = mktime(0,0,0,date("m",$t),date("d",$t)-1,date("Y",$t));
             $last_end_time = mktime(23,59,59,date("m",$t),date("d",$t)-1,date("Y",$t));
             /**今天的时间戳时间范围*/
//            $now_start_time = mktime(0,0,0,date("m",$t),date("d",$t),date("Y",$t));
//            $now_end_time = mktime(23,59,59,date("m",$t),date("d",$t),date("Y",$t));
             /**判断最后一次签到时间是否在昨天的时间范围内*/
             if($last_start_time<$sign['time']&&$sign['time']<$last_end_time){
                 $da['time'] = time();
                 $da['count'] = $sign['count']+1;
                 /**这里还可以加一些判断连续签到几天然后加积分等等的操作*/
                 D('Sign')->where(array("m_id"=>$m_id))->save($da);
             }else{
                     /**返回已经签到的操作*/
                     $da['time'] = time();
                     $da['count'] = 0;
                     D('Sign')->where(array("m_id"=>$m_id))->save($da);
             }
         }else{
             $data['m_id'] = $m_id;
             $data['time'] = time();
             $data['sign'] = 1;
             $res = D("Sign")->add($data);
             if($res){
                 /**成功就返回,或者处理一些程序,比如加积分*/
             }
         }     }
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-10-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 思梦PHP 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
一个小小的签到功能,到底用 MySQL 还是 Redis ? ?
redis实现方案,使用bitmap来实现,bitmap是redis 2.2版本开始支持的功能,一般用于标识状态,
芋道源码
2020/10/09
1.1K0
一个小小的签到功能,到底用 MySQL 还是 Redis ? ?
一个小小的签到功能,到底用MySQL还是Redis?
redis实现方案,使用bitmap来实现,bitmap是redis 2.2版本开始支持的功能,一般用于标识状态,
良月柒
2020/09/23
7410
一个小小的签到功能,到底用MySQL还是Redis?
百度大数据面试SQL-连续签到领金币
有用户签到记录表,t_coin_signin,记录用户当天是否完成签到,请计算出每个用户的每个月获得的金币数量;
数据仓库晨曦
2024/07/12
1850
百度大数据面试SQL-连续签到领金币
累计连续签到设计和实现
作者:hdfg159 链接:https://www.jianshu.com/p/bacd924df502
后端码匠
2021/06/09
3.3K0
累计连续签到设计和实现
官方JDK的BUG?蘑菇签到又出问题啦!
但是,在 2021 年 12月 26 日,蘑菇群里的小伙伴反馈签到成功,但是当日显示未签到,签到积分也正常发放了。
陌溪
2022/01/05
4320
官方JDK的BUG?蘑菇签到又出问题啦!
让你设计实现一个签到功能,到底用MySQL还是Redis?
redis实现方案,使用bitmap来实现,bitmap是redis 2.2版本开始支持的功能,一般用于标识状态,
业余草
2020/09/21
2.3K0
基于TP的每日签到代码
自己写的基于TP的每日签到代码。需要的带走,大牛勿喷 // 每日签到 public function dailySign(){ // 获取用户签到信息 $merArr = M('merchant') -> where("MerID = '$this->UserId'") -> find(); // 判断是否为注册后第一次签到 if($merArr['totalTime'] == 0 && $mer
CrazyCodes
2018/09/18
1.1K0
基于Redis的bitmap位图实现用户签到功能
如果这样存数据,对于用户量大的应用,db可能扛不住,比如 1000W 用户,一天一条,那么一个月就是 3 亿数据,非常庞大。
JavaEdge
2021/02/23
2.6K0
基于Redis的bitmap位图实现用户签到功能
Android自定义实现按周签到打卡功能
之前实现过《Android可签到的日历控件》的功能,跟这篇一样都是实现签到打卡功能,这篇实现的是按月进行打卡做标识,本篇内容实现的按周进行签到打卡。
SoullessCoder
2019/08/07
1.9K0
Android自定义实现按周签到打卡功能
PHP获取今天,昨天,本月,上个月,本年 起始时间戳
 PHP获取今天,昨天,本月,上个月,本年 起始时间戳或日期,最新更新时间为2020-04-01
Lansonli
2021/10/09
1.8K0
MySQL查询连续数据
查询连续记录并对这些连续数据统计取出指定连续次数的记录,这类操作并不多,但出现时会比较棘手。
星哥玩云
2022/08/17
5.3K0
MySQL查询连续数据
签到功能,用 MySQL 还是 Redis ?
redis实现方案,使用bitmap来实现,bitmap是redis 2.2版本开始支持的功能,一般用于标识状态,
java进阶架构师
2020/10/23
1.9K0
签到功能,用 MySQL 还是 Redis ?
typecho制作打卡签到+积分功能实例教程
  每次下载主题,都会扣除积分才能进行下载,因此特意添加了打卡功能,每天只能打卡一次,从而增加积分,当然了,也可以进行充值积分功能,但是这里主要还是说的打卡功能
宜轩
2022/12/29
1.3K0
typecho制作打卡签到+积分功能实例教程
DEDECMS织梦添加会员积分的方法
不需要插件实现织梦会员增加签到积分/金币方法,因为很多插件我们大家可能都不了解,有些也可以增加了脚本,所以自己手动添加的比较安全,现在把方法分享给大家。
米米素材网
2022/08/06
5.3K0
DEDECMS织梦添加会员积分的方法
CSDN是怎么实现用户签到,统计签到次数,连续签到天数等功能微服务的
上图:CSDN每日签到,和每日练习打卡。 在很多互联网应用中,我们会存在签到送积分、签到领取奖励等这样的需求,比如:
共饮一杯无
2022/12/25
2.9K0
CSDN是怎么实现用户签到,统计签到次数,连续签到天数等功能微服务的
[mini-blog][v2.1.0]博客小程序签到功能实现
首先是mini_member,用于记录会员相关的汇总数据,以openId作为唯一索引,其中也预留了一些属性,比如积分,未读消息等,用于后期的功能迭代中。
Bug生活2048
2020/03/11
1.6K2
第六章 bitma介绍
统计多个集合元素的聚合结果,就是前面讲解过的交差并等集合统计交并差集和聚合函数的应用
RookieCyliner
2025/06/08
940
workerman实现redis bit位图实现用户签到PHP实例
Workerman不是重复造轮子,它不是一个MVC框架,而是一个更底层更通用的服务框架,你可以用它开发tcp代理、梯子代理、做游戏服务器、邮件服务器、ftp服务器、甚至开发一个php版本的redis、php版本的数据库、php版本的nginx、php版本的php-fpm等等。Workerman可以说是PHP领域的一次创新,让开发者彻底摆脱了PHP只能做WEB的束缚。
OwenZhang
2022/05/30
7650
workerman实现redis bit位图实现用户签到PHP实例
时间计算 原
        // 今天         // $stage=$this->getlastMonthDays('2015-5-15');         // $stage['start_time']=date("Y-m-d H:i:s",mktime(0,0,0,date('m'),date('d'),date('Y')));         // $stage['end_time']=date("Y-m-d H:i:s",mktime(0,0,0,date('m'),date('d')+1,date('Y'))-1);
双面人
2019/04/10
8130
相关推荐
一个小小的签到功能,到底用 MySQL 还是 Redis ? ?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验