簡體   English   中英

如何確定客戶端的時間不等於服務器的時間? (假設2小時錯誤)

[英]How to make a condition of if client's time is not equal to server time? (let say 2 hours error)

我只是使用xml http請求來獲取服務器的當前時間。

代碼如下:

var xmlHttp;
function srvTime(){
    try {
        //FF, Opera, Safari, Chrome
        xmlHttp = new XMLHttpRequest();
    }
    catch (err1) {
        //IE
        try {
            xmlHttp = new ActiveXObject('Msxml2.XMLHTTP');
        }
        catch (err2) {
            try {
                xmlHttp = new ActiveXObject('Microsoft.XMLHTTP');
            }
            catch (eerr3) {
                //AJAX not supported, use CPU time.
                alert("AJAX not supported");
            }
        }
    }
    xmlHttp.open('HEAD',window.location.href.toString(),false);
    xmlHttp.setRequestHeader("Content-Type", "text/html");
    xmlHttp.send('');
    return xmlHttp.getResponseHeader("Date");
}

var st = srvTime();
var date = new Date(st);
var localTime = new Date();
document.write("Local machine time is: " + localTime + "<br>");
document.write("Server time is: " + date);

我列出了兩個時間,第一個是客戶端本地時間,第二個是服務器時間。

時間模式是這樣的(WeekDay Month Date Year HH:MM:SS TimeZone(地區)):

本地機器時間為:2017年11月22日星期三15:44:00 GMT + 0800(HKT)

服務器時間是:2017年11月22日星期三14:44:02 GMT + 0800(HKT)

我需要做一個if條件,即客戶的本地時間與服務器時間不匹配,假設如果客戶的本地時間錯誤與服務器時間超過2小時,它將彈出一個alert("your time is not match!");

這是我的答案,js代碼:

var calcTimeError = (localTime.getTime() - date.getTime());
if(calcTimeError < -7200000 || calcTimeError > 7200000){
    //do something here (7200000 = 2 hours: 1000ms * 60 * 60 * 2)
    alert("your time is not match!");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM