連續簽到php
① php如何統計用戶連續簽到多少次
查詢表時加個日期變數欄位,然後倒序過慮計算簽到天數
如MYsql:
selectcount(*)連繼簽到天數from(
selecta.簽到日期,(@i:=DATE_ADD(@i,INTERVAL-1day))todayfrom簽到表ainnerjoin
(select@i:=max(簽到日期)from簽到表where簽到日期=curdate()or簽到日期=DATE_ADD(curdate(),INTERVAL-1day))b
orderbya.簽到時間desc
)cwheretoday=簽到日期
② 請問下那個PHP每日簽到時怎麼實現的!
以淘寶網領取淘金幣的簽到系統為例:
目標:
第一天簽到增加5個積分;第二天連續簽到則增加8個積分;第三天連續簽到,增加11個積分,第四天連續簽到,增加15個積分;第五天連續簽到,增加19個積分;第六天連續簽到,增加24個積分;第七天連續簽到,增加29個積分;第八天以後的連續簽到,都增加29個積分。連續簽到斷開,則積分從第一天開始計算。
思路:
這個比較簡單,思路是這樣的:
在用戶表裡添加一個連續登錄的欄位,如果每天連續登錄自增1,如果超過24小時的話就直接歸0.
再增加一個最後登錄的時間,格式是時間戳的。
首先判斷最後登錄的時間和現在的時間的時間差值是多少,函數如下:
<?php
function checkTime() {
if (time() - 最後登錄時間 > 24*60*60 ) { // 判斷時間是否大於24小時
// 讓欄位歸0
}
}
?>
這個樣子就可以了。
至於加分就簡單了。
如果欄位值為:
1就加5,
2就加8,
3就加11,
4就加15,
5就加19,
6就加24,
大於7就加29
③ php 想做個簽到,但是怎麼判斷連續3天 連續7天 連續30天簽到過啊。。思路是有 但是MYSQL那邊的語句。
數據表裡存儲兩個欄位,一個int存時間戳,一個int存簽到計數。每次簽到發生時,php頁面做判斷,計算本次簽到時間戳與系統記錄的最後一次簽到時間戳之差,超過3600*24,則將計數修改為零,否則+1。
sql語句就不寫了吧,就一個update的事情。。。
④ 怎麼用php來獲取時間 周次 節次來做簽到功能
簽到功能主要是需要獲取上次簽到時間,然後進行比對,如果比較之後在零點之後,且大於24小時,就認為連續簽到失敗。
關鍵點:每次需要記錄簽到時間,這樣以後無論是根據記錄,還是相應演算法都可以統計相關的簽到記錄。
簽到功能核心就是時間的比較,只要比對好時間,然後封裝簽到方法,就可以輕松記錄簽到情況。
⑤ 用phpphp+mysqlmysql做一個每日簽到功能,哪位大神有源代碼發給我看看。多謝了。
給你個思路,代碼實現並不難。首先在你的用戶表中插入一個欄位,用來保存簽到的時間戳,用戶點擊簽到時,先從資料庫中取這個時間戳,與今天0點的時間戳進行比較,如果比今天0點的時間戳小,就說明今天沒有簽到,那麼更新這個欄位為現在的時間戳。如果比今天0點的時間戳大,就說明今天已經簽到過了,不做更改。
你可能會用到:
mktime 函數,這個函數是構築時間戳的,它的參數可以從右向左依次省略。省略的參數將會默認為本地時間。如:mktime(0,0,0) 這樣就取到了今天0點的時間戳。
time 函數,取當前時間的時間戳,這個函數沒有任何參數。
⑥ PHP求連續簽到天數
設計表結構時多加一個欄位來存放連續簽到天數,每次簽到時更新這個欄位要簡單的多
否則你需要 每個人 都循環判斷前一天是否簽到的方法來解決
參考代碼
1--循環法
declare@dayint=1,--
2@userIdint=1,--用戶id
3@countint=0,--連續簽到多少天
4@isSinginTodayint--今天是否簽到
5
6whileexists(select*from#SignInLog
7whereUserId=@UserIdandDATEDIFF(day,createtime,getdate())=@day)
8begin
9set@count=@count+1--【循環方法】
10set@day=@day+1--
11end
12
13select@isSinginToday=COUNT(*)from#SignInLogwhereUserId=@UserIdandDATEDIFF(day,createtime,getdate())=0--今天是否登錄
14
15
16select@isSinginToday,--當天是否簽到
17@count+@isSinginToday--連續簽到n天
如果資料庫支持row_number(), mysql 不支持此函數...
可以用
declare@nowdatetime=getdate(),
@countint,
@useridint=1,
@isSinginTodayint
select@count=count(*)from(
selectdatediff(day,CreateTime,@now)aa,--簽到時間對比今天的差值
row_number()over(orderbycreatetimedesc)bb--排序欄位
from#SignInLog
whereUserId=@userIdanddatediff(day,CreateTime,@now)>0--條件排除今天的簽到記錄
)Twhereaa=bbselect@isSinginToday=COUNT(*)from#SignInLogwhereUserId=@UserIdandDATEDIFF(day,createtime,getdate())=0--今天是否登錄
select@isSinginToday,--當天是否簽到
@count+@isSinginToday--連續簽到n天
⑦ 關於php自動簽到。 我想問的是寫完代碼之後如何實現它自己一直運行php放在後台不是要有人發請求
使用
ignore_user_abort();
set_time_limit(0);
可以實現你的目的,但是,一般都不建議這樣做
其實,如果你僅僅是想實現簽到的功能,完全可以通過"補簽"的方式來實現
只有在發出請求的時候才簽到,然後同時將過去的進行補簽就行了
⑧ phpwind怎麼添加每日簽到功能啊
去安裝插件 每日簽到 v3.00 FOR phpwind 就可以簽到了
⑨ PHP 如何判斷用戶當天已經簽到了
添加一張簽到記錄表,記錄用戶簽到時間,然後每次檢測簽到記錄表,如果時間的年月日等於當天,那麼說明當天已經簽到,如果不等於,說明沒有簽到,如果連續簽到的話,那麼在用戶表增加一個連續天數欄位,每次簽到自增1,如果下次簽到中斷了,那麼自動清0,重新計算。邏輯不復雜,自己可以琢磨一下。
⑩ php怎麼做簽到積分
ajax+普通的寫入資料庫,