2013-08-26 48 views
0

我有一個遊戲網站,我需要在比賽時間之前顯示計時器。一旦計時器達到極限,我需要加載遊戲。倒數計時器隨當地時間而改變

爲此,我使用了jquery countdown。它的工作狀況一般。

我的問題是,如果用戶更改他們的系統時間(本地時間),定時器運行,剩餘的時間限制改變,遊戲開始。

如何防止倒計時器從當地時間?請幫我解決這個問題。

我的代碼,

$('#gamewindow').countdown({ 
     until : 100, 
     layout:'{mn} : {s<}{snn} {s>}', 
     onExpiry: function() { 
       $('#gamewindow').load('game.php');   
     }, 
    }); 

}); 

<div id="gamewindow"></div> 

回答

1

不是通過普通的JavaScript初始化計時器(這將返回客戶端時,即客戶的計算機上的時間),則應該依靠服務器 - 時間,即服務器上的時間。這將標準化所有球員的時間。

因此,在訪問倒計時頁面時,您的Javascript計數器將被初始化爲服務器的時間。你可以使用AJAX或者一些hack-y PHP來做到這一點。對於這個任務,啓動是唯一一次JS需要來自服務器的東西;之後,「倒計時」效果將由JS管理。當然,這不會被超級同步,但是這個錯誤是可以原諒的。即使用戶使用不同的本地時區設置刷新,JS也會從服務器時間重新初始化 - 沒有問題!

0

由於您無法阻止用戶更改其系統時間,因此解決方案必須是服務器端。

game.php中,檢查是否已到達match_start_time,如果沒有,則重定向到等待頁面(應該再次顯示倒數計時器)。