[英]Timestamp: check if it has been 30 minutes
我已經設置了這個代碼,它似乎沒有工作。 基本上我在數據庫中放了一個時間戳,每當有人試圖提交一些東西時,我會檢查他們的IP,然后他們最后一次提交時間戳基本上我需要確保它在發布前30分鍾已經超過了。 這是我迄今為止的代碼......
$ip = $_SERVER["REMOTE_ADDR"];
$chkquery = "SELECT * FROM faucet where ip='$ip' ORDER BY timestamp DESC LIMIT 1;";
$chk = mysql_query($chkquery) or die($chkquery."<br/><br/>".mysql_error());
while($row = mysql_fetch_array($chk, MYSQL_ASSOC)){
$timestamp = $row['timestamp'];
}
$timenow = time();
$chktime = strtotime($timestamp);
if($chktime <= ($timenow - 1800)) {
echo "Yay! It has been 30 minutes!";
} else {
echo "Wait! Its not been 30 minutes";
}
我需要更改/修復以使其工作嗎? 非常感謝您的幫助! if語句可能會被顛倒,但是IDK,我最終還是Yay! 無論什么時候......
依賴strtotime()
是不安全的,因為它是由系統的時區設置定義的。 您應該調整date.timezone setting
或使用date_default_timezone_set()
例如:
date_default_timezone_set('America/New_York');
...
if($timenow - $chktime >= 1800) {
echo "Yay! It has been 30 minutes!";
} else {
echo "Wait! Its not been 30 minutes";
}
編輯:添加剩余時間
$time_diff = $timenow - $chktime;
if( $time_diff >= 1800) {
echo "Yay! It has been 30 minutes!";
} else {
$remaining = (1800 - $time_diff );
echo "Wait! Its not been 30 minutes\n";
echo "please come back in ".date ( "i:s" , $remaining)." minutes";
}
請檢查您的數據庫時區和PHP時區設置。
你在數據庫和PHP上的時區可能不同。
在PHP腳本上你可以使用date_default_timezone_set()
來設置時區,使用date_default_timezone_get()
來檢查設置的時區
在mysql上,查看my.ini
或my.cnf
的設置
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.