簡體   English   中英

時間戳:檢查是否已有30分鍾

[英]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.inimy.cnf的設置

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM