以淘寶網(wǎng)領(lǐng)取淘金幣的簽到系統(tǒng)為例:
專注于為中小企業(yè)提供網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)臨縣免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了超過千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。
目標:
第一天簽到增加5個積分;第二天連續(xù)簽到則增加8個積分;第三天連續(xù)簽到,增加11個積分,第四天連續(xù)簽到,增加15個積分;第五天連續(xù)簽到,增加19個積分;第六天連續(xù)簽到,增加24個積分;第七天連續(xù)簽到,增加29個積分;第八天以后的連續(xù)簽到,都增加29個積分。連續(xù)簽到斷開,則積分從第一天開始計算。
思路:
這個比較簡單,思路是這樣的:
在用戶表里添加一個連續(xù)登錄的字段,如果每天連續(xù)登錄自增1,如果超過24小時的話就直接歸0.
再增加一個最后登錄的時間,格式是時間戳的。
首先判斷最后登錄的時間和現(xiàn)在的時間的時間差值是多少,函數(shù)如下:
?php
function checkTime() {
if (time() - 最后登錄時間 24*60*60 ) { // 判斷時間是否大于24小時
// 讓字段歸0
}
}
?
這個樣子就可以了。
至于加分就簡單了。
如果字段值為:
1就加5,
2就加8,
3就加11,
4就加15,
5就加19,
6就加24,
大于7就加29
給你個思路,代碼實現(xiàn)并不難。首先在你的用戶表中插入一個字段,用來保存簽到的時間戳,用戶點擊簽到時,先從數(shù)據(jù)庫中取這個時間戳,與今天0點的時間戳進行比較,如果比今天0點的時間戳小,就說明今天沒有簽到,那么更新這個字段為現(xiàn)在的時間戳。如果比今天0點的時間戳大,就說明今天已經(jīng)簽到過了,不做更改。
你可能會用到:
mktime 函數(shù),這個函數(shù)是構(gòu)筑時間戳的,它的參數(shù)可以從右向左依次省略。省略的參數(shù)將會默認為本地時間。如:mktime(0,0,0) 這樣就取到了今天0點的時間戳。
time 函數(shù),取當前時間的時間戳,這個函數(shù)沒有任何參數(shù)。
什么是thinkphp???
要是php代碼的話
就假設(shè)建個數(shù)據(jù)庫,主鍵是用戶名,一項是經(jīng)驗值,一項是時間
點擊簽到,用get傳給一個php頁面一個值,php獲取之后,用select where 查找到cookie中的用戶名,找到對應(yīng)的經(jīng)驗值,先獲取一次付給變量,再加上10用update語句更改數(shù)據(jù)庫內(nèi)容,并更改時間為最新次簽到時間
然后再看顯示簽到那頁,可以先用個php查找對應(yīng)cookie的時間項 ,并與當前時間對比(這個看你咋設(shè)置了,是按24點過了就能在簽到還是過了24小時在下一次簽到),顯示簽到或已簽到(已簽到不賦予功能)
基本思路就這樣了,但不是最優(yōu)化,比如那個顯示簽到已簽到,還要遍歷一次數(shù)據(jù)庫,如果數(shù)據(jù)庫數(shù)據(jù)量很大,遍歷很浪費時間,也可以放到另一個php里去實現(xiàn)查詢是否可簽
希望能有幫助