2013-10-11 60 views
0

我有一個網站,我想根據他的國家 來捕獲訪客登錄(日期/時間),以便我可以向他展示他上次登錄的詳細信息,當他再次登錄到我的網站時。 我已經嘗試過這樣的:根據國家捕獲當前日期時間。

$date = new DateTime('now', new DateTimeZone('Australia/ACT'));<br> 
$current_time=$date->format(Y-m-d'H:i:s'); 

我想讓它動態地

請幫

感謝

回答

0

客戶端的時區只能通過客戶端的方法獲得。這意味着PHP(服務器)永遠不會知道請求客戶端的TZ。

參見How to get client's timezone?Getting the client's timezone in JavaScript

+0

您可以在服務器端獲取國家和時區。 – Carlos

+0

@jackflash(1)許多國家有多個時區:美國有4個,俄羅斯有10個。因此,你必須有地區/城市數據庫才能真正瞭解TZ,即使這樣他們也不完全準確。 (2)如果用戶通過代理瀏覽,那麼IP地址不會反映他們的地理位置,JavaScript是唯一可信賴的來源,儘管GeoIP更簡單。 (3)GeoIP方法還假定Net_GeoIP可用/已安裝,並且MaxMind DAT保持最新狀態。 – zamnuts

+0

您也可以通過geoip獲取該地區。它可以在大多數情況下工作,如果有人瀏覽代理,他應該知道這意味着這個限制。重點是:你可以從服務器端獲取用戶的時區。 – Carlos

0

您可以使用PECL的geoip的:http://pecl.php.net/package/geoip

下面是文檔:http://www.php.net/manual/en/ref.geoip.php

,讓您根據自己的IP地址(geoip_country_code_by_name()geoip_region_by_name())找到你的用戶。此外,它還具有映射國家代碼和時區的功能(geoip_time_zone_by_country_and_region())。

例子:

function getTimezone($ip) 
{ 
    return geoip_time_zone_by_country_and_region(
     geoip_country_code_by_name ($ip), 
     geoip_region_by_name($ip) 
    ); 
} 
+0

警告:反向IP查找(geoip)提供推斷的位置 – zamnuts

0

首先,我們得利用

$ip  = $_SERVER['REMOTE_ADDR']; 

然後使用goip我們可以得到用戶的國家和時區的客戶端IP。這很容易。