Web服務器可以在發送請求時確定用戶本地時間和時區嗎?是否可以通過Web請求確定用戶時間?
它可以完成使用JavaScript來捕獲它並將其發回服務器?
我的公司想跟蹤有多少用戶在辦公時間以外使用我們的網站(不,我真的不知道爲什麼!)。
謝謝。
Web服務器可以在發送請求時確定用戶本地時間和時區嗎?是否可以通過Web請求確定用戶時間?
它可以完成使用JavaScript來捕獲它並將其發回服務器?
我的公司想跟蹤有多少用戶在辦公時間以外使用我們的網站(不,我真的不知道爲什麼!)。
謝謝。
您需要將客戶端的JavaScript時間放入隱藏字段中,並假定其時鐘設置正確。上回發到服務器搶那場然後
var newDate = new Date();
hiddenFieldName.value = newDate.toLocaleString();
:
myTime = new Date() >> Tue Feb 03 2009 12:24:28 GMT-0500 (Eastern Standard Time)
打敗了我一拳:) – 2009-02-03 17:23:33
你還必須假設他們還沒有禁用Javascript ... – 2009-02-03 18:04:39
你可以加載日起使用JavaScript的隱藏字段。
JavaScript的確是要走的路。
幸運的是網頁有lots of sample code you can use。 This page似乎很全面。
應當指出的是,知道某人的電流偏移是不一樣知道自己的時區,但它可能是足以讓你的目的:)
那麼你可以閱讀瀏覽器的本地時間使用JavaScript:
var now = new Date();
然後,你可以使用的XmlHttpRequest或隱藏的表單字段其發佈到服務器...
當然,你可以嵌入一個JS導出客戶端時間戳,並將其發送BA ck附加到其他某個請求上,但這是完全不可靠的,因爲用戶可以將其客戶時間設置爲他們想要的任何時間,並且需要第二個請求,這可能會有點濫用,或者技術上難以確保。許多實現都會通過對文本文件進行消除和遺忘AJAX請求或將單個空白像素圖像添加到頁面來實現此目的。
您可以嘗試根據第一個請求推導出一個類似的指標,並根據IP地址和GMT時間戳給出當地時間 - 但如果您還沒有IP /地理數據庫,則可能會很昂貴:)
您應該考慮反向DNS解析您現有的Web服務器日誌。然後,您可以使用地理編碼來猜測用戶的時區(以及相對於您的Web服務器時間的當地時間)。
您不需要編寫新的JavaScript代碼,編寫自定義服務器端代碼以記錄用戶時間,然後部署更新的網站。
這Perl腳本可能會是一個有用的例子:Perl Script that Does Bulk Reverse-DNS Lookups
好問題;)+1 – Sergio 2009-02-03 17:23:53
謝謝大家,我認識到,它依賴於用戶有他們的時鐘設置正確。 – 2009-02-03 17:27:17