2012-12-12 62 views
0

是有沒有辦法檢測到我的客戶端的IP地址,然後用它來跟蹤自己的時區。目前 IAM使用的代碼塊與API一起:時區檢測

function getIpAddress() { 
    return (empty($_SERVER['HTTP_CLIENT_IP'])?(empty($_SERVER['HTTP_X_FORWARDED_FOR'])?$_SERVER['REMOTE_ADDR']:$_SERVER['HTTP_X_FORWARDED_FOR']):$_SERVER['HTTP_CLIENT_IP']); 
} 

    ini_set("allow_url_fopen",1); 
    $getfunc= 'getIpAddress'; 
    $getfunc= 'getIpAddress'; 
    $json = file_get_contents('http://smart-ip.net/geoip-json/'.$ip); 
    $ipData = json_decode($json, true); 
    $ipadd = $ipData['host']; 
    $geotz = $ipData['timezone']; 
    $geotzd = 'Passed'; 
    $cntry = $ipData['countryName']; 

$ ip返回122.54.230.162。但仍然在說,我的問題是

Message: Undefined index: timezone 

測試它在服務器上會顯示這個錯誤,而這是當地的好.. 我需要幫助

問候..

+0

什麼是$ json值?你可以登錄嗎? –

+0

你應該看看下面的鏈接。 http://stackoverflow.com/questions/3488425/php-ini-file-get-contents-external-url –

+0

Psst,你會得到'hostname'結果的IP地址,這可能會導致本地或私人IP地址範圍。也許你應該把一個真實的IP地址用於stesting。 – Charles

回答

3

有各種猜測時區的方法。使用類似於你的問題的服務是一個,儘管代碼看起來像它獲得本地計算機的時區,但我可能是錯的。無論如何,這似乎並不可靠。

另一種方式是jstimezonedetect JavaScript庫。