PHP 實現簽到功能

2022-03-22 18:17:50 字數 2226 閱讀 4844

如圖所示:

實現上圖功能,建立兩張表:簽到獎品表、簽到記錄表(這個表可以再拆分出乙個表)

2*功能:計算兩個時間戳之間相差的日時分秒

3*$begin_time 開始時間戳

4*$end_time 結束時間戳5*/

6public

function timediff($begin_time,$end_time

)else

1415

//計算天數

16$timediff = $endtime-$starttime;17

$days = intval($timediff/86400);

18//

計算小時數

19$remain = $timediff%86400;

20$hours = intval($remain/3600);

21//

計算分鐘數

22$remain = $remain%3600;

23$mins = intval($remain/60);

24//

計算秒數

25$secs = $remain%60;

26$res = array("day" => $days,"hour" => $hours,"min" => $mins,"sec" => $secs

);27

return

$res;28

}2930//

黃梅--簽到列表 20171206 by csj

31public

function

signlist()

38$list = d('loginrewards')->field('id,day,reward,icon,type,name,des')->select();

39$isok = d('sign')->where("user_id=")->order('id desc')->find();

4041

$last_time = strtotime($isok['s_time']);//

最後一次簽到時間

4243

$t = time

();44

//$start = mktime(0,0,0,date("m",$t),date("d",$t),date("y",$t));

45$end = mktime(23,59,59,date("m",$t),date("d",$t),date("y",$t));//

當天時間的最後1刻 (注意)

4647

$current_day = $end;//

當天時間的最後1刻

4849

$timeis = $this->timediff($last_time,$current_day);//

時間差50

51if (!empty($isok

)) else

60 }elseelse

68 }elseif ($timeis['day']==0)

7172 }elseelseif($value['day']<=$isok['s_number'])else

82 }elseif ($timeis['day']==0) else89}

90}91$list[$key]['is_sign'] = $is_sign;92

}93}94 }elseelse

101}

102}

103$re['data'] = $list

;104

$re['message'] = '請求成功';

105 gresult::getinstance()->echookandresult($re

);106 }

view code

參考:

php實現簽到功能

首先我在資料庫裡建了兩張表,乙個是使用者的積分表,乙個是簽到狀態表,分來用來記錄使用者的積分數和先到狀態 在使用者簽到狀態表中我們有乙個字段,last sign time,即上一次簽到時間,每次可以簽到的時候把這個時間與當前時間進行比較 如果相差為0天,則說明今天已簽到 這個簽到是24小時內只能簽到...

PHP實現簽到功能

php實現簽到功能 1 表設計 1 主表 create table sign id int 11 not null auto increment comment 主鍵自增 uid varchar 50 not null default 0 comment 使用者id 唯一 username varc...

PHP實現簽到功能

1 表設計 1 主表 create table sign id int 11 not null auto increment comment 主鍵自增 uid varchar 50 not null default 0 comment 使用者id 唯一 sign count int 11 not n...