Ⅰ 大牛,php 每日簽到功能限制某些用戶不允許簽到該如何實現
首先對需求分析一下:
根據當前時間判斷,是否可以簽到。(對吧看)
所以你需要有一個變數用來儲存他上一次簽到的時間,具體到某一天。在簽到的時候取這個欄位然後判斷就行了。
應該要用到的是strtotime() 和date() 這兩個函數。
(有點晚了提供下思路睡了,樓主可以根據具體的資料庫結構適當修改)
Ⅱ 關於php自動簽到。 我想問的是寫完代碼之後如何實現它自己一直運行php放在後台不是要有人發請求
使用
ignore_user_abort();
set_time_limit(0);
可以實現你的目的,但是,一般都不建議這樣做
其實,如果你僅僅是想實現簽到的功能,完全可以通過"補簽"的方式來實現
只有在發出請求的時候才簽到,然後同時將過去的進行補簽就行了
Ⅲ 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源碼,可以設定給一個用戶一個積分值(比如10000),並每次送10分
理解成簽到送10個積分不就好了,按你們考慮的方法一次10分,10000分要送3年,策略這種東西會3年不變?所以根本沒必要考慮。
此外,積分、虛擬資產等這類東西的變更都是要有記錄的,所以每次送分是需要寫對應的log的,比如
id:13345, uid: 3342, time: 2016-02-18 14:02:05, type: 贈送, value: 10
日後如果需要調整邏輯,只要統計一下用戶的type=贈送的sum(value)就行了。
Ⅳ php簽到,點擊簽到按鈕,資料庫裡面的積分加1,
在資料庫添加一個積分表和用戶ID綁定,用戶點擊一次就把這個ID的積分+1,限制每天只操作一次,就是你可以做個記錄流水表,記錄時間,用戶ID,就是用戶今天簽到一次就向這張表中加一條數據,用來避免重復簽到
Ⅵ 怎麼用php來獲取時間 周次 節次來做簽到功能
簽到功能主要是需要獲取上次簽到時間,然後進行比對,如果比較之後在零點之後,且大於24小時,就認為連續簽到失敗。
關鍵點:每次需要記錄簽到時間,這樣以後無論是根據記錄,還是相應演算法都可以統計相關的簽到記錄。
簽到功能核心就是時間的比較,只要比對好時間,然後封裝簽到方法,就可以輕松記錄簽到情況。
Ⅶ php如何寫出上班簽到
<html>
<head>
<title>上班簽到</title>
<meta charset='UTF-8'>
</head>
<body>
<form action='' method='post'>
簽到人姓名<input type='text' name='Name'><input type='submit' name='submit' value='簽到'><br>
</Form>
<?php
if(isset($_POST['submit')){
$name = $_POST['Name'];
$a = fopen("./簽到文件.txt","a");
$b =file("./簽到文件.txt");
foreach($b as $line){
if($line == $name."已經簽到"){
echo "你已經簽到過了";
fclose($a);
return;
break;
}
}
fwrite($a,$name."已經簽到");
fclose($a);
?>
</body>
</html>
一天簽到結束後需要刪除簽到文件
Ⅷ 請問下那個PHP每日簽到時怎麼實現的!
給你個思路吧,資料庫設置一個欄位為最後登錄時間,判斷時間是否為前一天,如果是就要求簽到。 再設置個簽到欄位,判斷當前是否簽到,以防登錄了沒簽到卻不要求簽到了。
Ⅸ php 簽到時間判斷,該怎麼寫出源代碼,比如現在簽到了,過了晚上24點就可以再簽到一次
首先對需求分析一下:
根據當前時間判斷,是否可以簽到。(對吧?)
所以你需要有一個變數用來儲存他上一次簽到的時間,具體到某一天。在簽到的時候取這個欄位然後判斷就行了。
應該要用到的是strtotime() 和date() 這兩個函數。
(有點晚了提供下思路睡了,樓主可以根據具體的資料庫結構適當修改)
Ⅹ PHP論壇每日簽到拜託了各位 謝謝
檢查一下你的調用是否無誤