我有一個網站,我想根據他的國家 來捕獲訪客登錄(日期/時間),以便我可以向他展示他上次登錄的詳細信息,當他再次登錄到我的網站時。 我已經嘗試過這樣的:根據國家捕獲當前日期時間。
$date = new DateTime('now', new DateTimeZone('Australia/ACT'));<br>
$current_time=$date->format(Y-m-d'H:i:s');
我想讓它動態地
請幫
感謝
我有一個網站,我想根據他的國家 來捕獲訪客登錄(日期/時間),以便我可以向他展示他上次登錄的詳細信息,當他再次登錄到我的網站時。 我已經嘗試過這樣的:根據國家捕獲當前日期時間。
$date = new DateTime('now', new DateTimeZone('Australia/ACT'));<br>
$current_time=$date->format(Y-m-d'H:i:s');
我想讓它動態地
請幫
感謝
客戶端的時區只能通過客戶端的方法獲得。這意味着PHP(服務器)永遠不會知道請求客戶端的TZ。
參見How to get client's timezone?和Getting the client's timezone in JavaScript。
您可以使用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)
);
}
警告:反向IP查找(geoip)提供推斷的位置 – zamnuts
您可以在服務器端獲取國家和時區。 – Carlos
@jackflash(1)許多國家有多個時區:美國有4個,俄羅斯有10個。因此,你必須有地區/城市數據庫才能真正瞭解TZ,即使這樣他們也不完全準確。 (2)如果用戶通過代理瀏覽,那麼IP地址不會反映他們的地理位置,JavaScript是唯一可信賴的來源,儘管GeoIP更簡單。 (3)GeoIP方法還假定Net_GeoIP可用/已安裝,並且MaxMind DAT保持最新狀態。 – zamnuts
您也可以通過geoip獲取該地區。它可以在大多數情況下工作,如果有人瀏覽代理,他應該知道這意味着這個限制。重點是:你可以從服務器端獲取用戶的時區。 – Carlos