2012-06-18 33 views
2

我正在嘗試學習如何創建和測試時間戳的到期時間。我設置了一個簡單的示例,試圖測試已過期的時間戳,但似乎無法正常工作,而且我想知道是否有人可以幫我弄清楚爲什麼它不會回顯「有效」和「過期」在適當的時候?創建一個簡單的時間戳並測試它是否已過期

<?php 

echo' 
<html> 
<head> 
</head> 
<body>'; 

//set static current time 
$timestamp = 1340037073; 

if($timestamp <= strtotime("+10 minutes", $timestamp)){ 
    echo "Valid"; 
}else{ 
    echo "Expired"; 
} 


echo' 
</body> 
</html>'; 




?> 
+0

爲什麼不只是使用:'if($ timestamp <=($ timestamp +(60 * 10))){' –

+0

$ timestamp將始終小於$ timestamp + 10分鐘。 –

+0

將'strtotime(「+ 10分鐘」,$ timestamp)'保存到一個變量並查看該值是什麼 – andrewtweber

回答

3

time()功能獲得的當前時間,因此$timestamp應包含什麼,要與當前時間來檢查從外部源獲得的,例如數據庫中的時間,或者,以查看它是否已過期:

//test timestamp 
$timestamp = 1340037073; 

//check if it has expired (600 = 60*10 seconds = 10 minutes) 
if ((time() - $timestamp) < 600) 
{ 
    echo 'valid'; 
} 
else 
{ 
    echo 'expired'; 
} 

希望它適合你:)

+0

感謝您的回覆。所以我的問題是,當創建一個時間戳,如果我知道我正在檢查時間戳可以說1個月或6個月,是否容易計算秒數並創建條件語句以進行比較,就像您一樣以上? – AnchovyLegend

+0

我認爲有兩種方法可以檢查到期日期:1.查看是否已經過了給定的秒數(例如,檢查會話是否有效),或者2.查看某個日期是否已經到達(例如,for必須在給定日期之前給出答案的比賽)。 –

+1

在這種情況下,我確實假設你想檢查是否從'$ timestamp'過去了某個時間,所以我選擇了第一種方法。而不是600秒,你可以使用'60 * 10'來表明你再次檢查60秒* 10 = 10分鐘。 –

1

你有什麼將永遠有效。試想一下:

$i = 0; 

if ($i <= ($i+1)) { 
    // always truthy, because 1 is greater than 0 
} 

所以,你應該打開它:

$timestamp = 1340037073; 

if(strtotime("+10 minutes", $timestamp) <= $timestamp){ 
    echo "Valid"; 
} else { 
    echo "Expired"; 
} 

另外:爲什麼不開始使用DateTime,而你在嗎?

相關問題