以淘寶網(wǎng)領(lǐng)取淘金幣的簽到系統(tǒng)為例:
網(wǎng)站的建設(shè)成都創(chuàng)新互聯(lián)專注網(wǎng)站定制,經(jīng)驗(yàn)豐富,不做模板,主營網(wǎng)站定制開發(fā).小程序定制開發(fā),H5頁面制作!給你煥然一新的設(shè)計(jì)體驗(yàn)!已為成都柔性防護(hù)網(wǎng)等企業(yè)提供專業(yè)服務(wù)。
目標(biāo):
第一天簽到增加5個(gè)積分;第二天連續(xù)簽到則增加8個(gè)積分;第三天連續(xù)簽到,增加11個(gè)積分,第四天連續(xù)簽到,增加15個(gè)積分;第五天連續(xù)簽到,增加19個(gè)積分;第六天連續(xù)簽到,增加24個(gè)積分;第七天連續(xù)簽到,增加29個(gè)積分;第八天以后的連續(xù)簽到,都增加29個(gè)積分。連續(xù)簽到斷開,則積分從第一天開始計(jì)算。
思路:
這個(gè)比較簡單,思路是這樣的:
在用戶表里添加一個(gè)連續(xù)登錄的字段,如果每天連續(xù)登錄自增1,如果超過24小時(shí)的話就直接歸0.
再增加一個(gè)最后登錄的時(shí)間,格式是時(shí)間戳的。
首先判斷最后登錄的時(shí)間和現(xiàn)在的時(shí)間的時(shí)間差值是多少,函數(shù)如下:
?php
function checkTime() {
if (time() - 最后登錄時(shí)間 24*60*60 ) { // 判斷時(shí)間是否大于24小時(shí)
// 讓字段歸0
}
}
?
這個(gè)樣子就可以了。
至于加分就簡單了。
如果字段值為:
1就加5,
2就加8,
3就加11,
4就加15,
5就加19,
6就加24,
大于7就加29
簽到功能主要是需要獲取上次簽到時(shí)間,然后進(jìn)行比對(duì),如果比較之后在零點(diǎn)之后,且大于24小時(shí),就認(rèn)為連續(xù)簽到失敗。
關(guān)鍵點(diǎn):每次需要記錄簽到時(shí)間,這樣以后無論是根據(jù)記錄,還是相應(yīng)算法都可以統(tǒng)計(jì)相關(guān)的簽到記錄。
簽到功能核心就是時(shí)間的比較,只要比對(duì)好時(shí)間,然后封裝簽到方法,就可以輕松記錄簽到情況。
給你個(gè)思路,代碼實(shí)現(xiàn)并不難。首先在你的用戶表中插入一個(gè)字段,用來保存簽到的時(shí)間戳,用戶點(diǎn)擊簽到時(shí),先從數(shù)據(jù)庫中取這個(gè)時(shí)間戳,與今天0點(diǎn)的時(shí)間戳進(jìn)行比較,如果比今天0點(diǎn)的時(shí)間戳小,就說明今天沒有簽到,那么更新這個(gè)字段為現(xiàn)在的時(shí)間戳。如果比今天0點(diǎn)的時(shí)間戳大,就說明今天已經(jīng)簽到過了,不做更改。
你可能會(huì)用到:
mktime 函數(shù),這個(gè)函數(shù)是構(gòu)筑時(shí)間戳的,它的參數(shù)可以從右向左依次省略。省略的參數(shù)將會(huì)默認(rèn)為本地時(shí)間。如:mktime(0,0,0) 這樣就取到了今天0點(diǎn)的時(shí)間戳。
time 函數(shù),取當(dāng)前時(shí)間的時(shí)間戳,這個(gè)函數(shù)沒有任何參數(shù)。
在數(shù)據(jù)庫添加一個(gè)積分表和用戶ID綁定,用戶點(diǎn)擊一次就把這個(gè)ID的積分+1,限制每天只操作一次,就是你可以做個(gè)記錄流水表,記錄時(shí)間,用戶ID,就是用戶今天簽到一次就向這張表中加一條數(shù)據(jù),用來避免重復(fù)簽到