如果您有MySQL服務器,則可以使用免費安裝的IP數據庫,然後執行$_SERVER['REMOTE_ADDR']
並針對數據庫數據運行該數據庫。
即(基於一些任意分貝)
<?php
$result = mysql_query("SELECT *
FROM ips
WHERE ip = {$_SERVER['REMOTE_ADDR']}
LIMIT 1") or die(mysql_error());
$row = mysql_fetch_assoc($result);
$city = $row['city'];
$state = $row['state'];
$country = $row['country'];
?>
有些數據庫(或只是google吧):http://www.ipinfodb.com/ip_database.php
編輯
你也可以做其他的JSON/XML請求API和解析數據:
ie(使用ipinfodb.com再次)
$doc->loadXML(file_get_contents("http://api.ipinfodb.com/v2/ip_query.php?key=your_key&ip=" . $_SERVER['REMOTE_ADDR'] . "&timezone=false"));
$country = $doc->getElementsByTagName('CountryName')->item(0)->nodeValue;
有一些服務可以讓你下載一個csv格式的粗粒度數據庫,使IPS降到國家級別。但除此之外,你被困在外部服務中。如果提供者的API不太可怕,你可以用一些CURL調用重新創建geoip _ *()函數。 –
這些服務如何確定您的IP地址在哪裏?他們如何獲得地點開始?我怎麼能生成我自己的數據庫? – Cyclone
爲什麼要有自己的數據庫,當有免費的API會給你他們的?要從頭開始創建自己的數據庫需要一年的時間。 –