ThinkPHP连续签到小案例

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

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

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

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

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

/**连续签到的实现方式*/
     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){
                 /**成功就返回,或者处理一些程序,比如加积分*/
             }
         }     }

原文发布于微信公众号 - 思梦PHP(sm_php)

原文发表时间:2016-10-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏张善友的专栏

Using sqlite with .NET

The other day I found that there is a .NET wrapper for sqlite. sqlite is a very ...

2318
来自专栏海说

Java应用中常见的JDBC连接字符串(SQLite、MySQL、Oracle、Sybase、SQLServer、DB2)

Java应用中常见的JDBC连接字符串 Java应用中连接数据库是不可或缺的,于是便整理一些可能用到的JDBC的jar包及其相匹配的URL,以备日后查阅。 1)...

2750
来自专栏吴小龙同學

时间工具类TimeUtil

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30...

3066
来自专栏C/C++基础

C#获取系统当前时间

ystem.DateTime currentTime=new System.DateTime(); 1.1 取当前年月日时分秒 currentTime=Sy...

1153
来自专栏跟着阿笨一起玩NET

C# Stream 和 byte[] 之间的转换

631
来自专栏xingoo, 一个梦想做发明家的程序员

windows程序设计-第四章 system1.c

/*---------------------------------------------------- SYSMETS1.C -- System M...

24010
来自专栏积累沉淀

Hive2.0.0操作HBase 1.2.1报错解决

首先看错  org.apache.hive.service.cli.HiveSQLException: Failed to open new session: ...

2369
来自专栏c#开发者

C# : row-clickable GridView and get and set gridview rows using JavaScript

Complete C# code: ---------------- using System; using System.ComponentModel; ...

3006
来自专栏阿炬.NET

c# datetime 格式化

2856
来自专栏成长道路

JDBC动态SQL语句连接orcale数据库的工具类

import java.sql.Connection; import java.sql.DriverManager; import java.sql.P...

2520

扫码关注云+社区