2012-07-02 71 views
0

我正在嘗試創建一個按鈕或鏈接,該鏈接在1小時後過期。PHP倒數過期按鈕或鏈接

我設置訪客用cookie打開頁面的時間。

我見過的大多數代碼示例只會給出已經過去的時間,而不是剩下的時間。

例如:鏈接將在0小時,30分鐘,34秒

這僅僅是一些粗糙的代碼過期:

//Setting cookie example 
setcookie('previous_time', time(), time()+3600*1); 


$current_time = time(); 
$previous_time = $_COOKIE['previous_time']; 

$time_diff = $current_time-$previous_time; 

這是我堅持,我不知道如何將$time_diff時間戳 轉換爲「過期時間爲0小時,30分鐘和34秒」的格式。

非常感謝。

+0

什麼是你的時間戳格式? – sree

+1

任何人都可以清除那裏的餅乾,所以這是基本沒有意義的。 – nickb

+0

然後生病使用會話...無論哪種方式,這是無關它的過期部分即時貼:b – john

回答

0

要格式化時間差,只是做一些數學,因爲你的$time_diff只是兩個時間之間的秒數:

$hours = floor($time_diff/3600); 
$minutes = floor(($time_diff/60) % 60); 
$seconds = $time_diff % 60; 

echo "$hours hours, $minutes minutes, $seconds seconds\n"; 

所以,20712would produce值:

5 hours, 45 minutes, 12 seconds 
+0

這不適合我..只有分鐘正在移動,他們正在向上移動不下來...它必須是一個倒計時 – john

0

使用比較時間戳的公式,差異以秒爲單位。

因此,$ time_diff/60會讓你分;再除以60得到小時;等

0

我nickb同意基於cookie是篡改能力,而是說你在某種程度上標誌着第一次訪問了提前半小時時,鏈接將到期:

// set when we are counting down to 
setcookie('expires_at', time()+3600, time()+3600); 

// we are counting down not up (for "expires in" not "valid since" logic) 
$time_diff = $_COOKIE['expires_at'] - time(); 

$minutes = floor($time_diff/60); 
$seconds = floor($time_diff % 60); 

// zero hours since the link will only be valid for one hour max 
echo sprintf('expire in 0 hours, %d mins and %d seconds', $minutes, $seconds); 

然後,你可以這樣做:

if($time_diff > 0){ 
    echo '<a href="...">...</a>'; 
} 
+0

我得到「0小時過期,-22354237分鐘和-9秒」 – john

+0

相同在這裏,cookie數組設置在下一頁加載我認爲,所以你可能必須默認time_diff爲1第一次圍繞 –

+0

感謝tryin生病不得不繼續看:( – john