2017-01-13 66 views
0

客戶端瀏覽器中有一個HTML表單。用戶點擊提交按鈕。然後,JavaScript將XHR發送到服務器。 PHP知道時間of the arrival$_SERVER['REQUEST_TIME']),但對提交時間一無所知。它如何精確計算?如何準確確定XHR離開客戶的時間?

+3

在XHR請求中包含時間戳嗎? – Pete

+0

好主意,謝謝。我正在尋找一種更精確的方法,即處理錯誤設置的客戶端時鐘。有沒有辦法在XHR中包含一個正確的時間戳,與客戶端的時鐘無關? –

+0

不,因爲您不能相信客戶提供準確的時間戳。 – Pete

回答

1

這樣的建議,你會想時間戳添加到您的XHR請求作爲一個額外的URL參數:

"?sent_at=" + (new Date()).getTime() 

要記住的一點是,JavaScript的日期是在毫秒,而在日期PHP在衡量 - 所以你可能需要的時間戳從瀏覽器轉換,當你在PHP中使用它,像:

$date = intVal($_REQUEST['sent_at'])/1000; 

如果你真如果您希望獲得毫秒精度,那麼您可以按原樣使用提交的值 - 取決於您想要使用的值。

希望這會有所幫助!

+0

謝謝,它非常接近我正在尋找的內容,但我更喜歡即使客戶端的時鐘設置不正確也能正常工作的解決方案。那可能嗎? –

+0

不,這是不可能的:你將依賴於他們的電腦時鐘。我不知道任何服務端變量會保存從瀏覽器發送請求的時間... – MacPrawn

+0

如果時間戳由服務器在初始頁面加載時提供,然後存儲在客戶端上併發回到服務器終於?我只需要處理轉移時間,不是嗎? –