Neo 's Blog

Neo 's Blog

ip2nation 已經把 IP 所在的國別整理成 SQL 語法,只要下載下來放進資料庫即可:
http://www.ip2nation.com/ip2nation/Download


20060928_02.png
(IP 資料庫最後更新日期是上個月,應該有在持續更新)

放進資料庫之後,要使用的話必須把 IP 轉為數字進行查詢,ip2nation 有提供 PHP 的範例:

$server = ''; // MySQL hostname
$username = ''; // MySQL username
$password = ''; // MySQL password
$dbname = ''; // MySQL db name

$db = mysql_connect($server, $username, $password) or die(mysql_error());
mysql_select_db($dbname) or die(mysql_error());

$sql = 'SELECT c.country
FROM ip2nationCountries c, ip2nation i
WHERE
i.ip < INET_ATON("'.$_SERVER['REMOTE_ADDR'].'")
AND c.code = i.country
ORDER BY i.ip DESC LIMIT 0,1';

list($countryName) = mysql_fetch_row(mysql_query($sql));

// Output full country name
echo $countryName;

(使用 MySQL 的 INET_ATON() 函式把 IP 轉為數字)

如果不是用 MySQL 就必須自行做 IP 轉換的計算,計算的方式以 261.230.14.128 為例:
 261×2563 + 230×2562 + 14×256 + 128

PHP 的轉換範例:

$ip = split ("\.", "261.230.14.128");
echo $ip[3] + $ip[2]*256 + $ip[1]*256*256 + $ip[0]*256*256*256;

ip2nation 網址:
http://www.ip2nation.com/

7 Responses so far.

  1. OuTian 說道:

    和 geoip 比起來不知道哪個比較準 ? :p

  2. Neo 說道:

    OuTian 你突然跳出來真素嚇鼠人啦~:P

    ip2nation 目前我這邊測試都還算正確,wordpress 也有很多 plugin 是用 ip2nation 做的。ip2nation 雖然名氣沒有 GeoIP 來的大,但應該不會有太大的誤差。^^

  3. ip2nation 說道:

    我見過一個能定位到大陸各城市的在線定位的網站, 有興趣的可以試試:
    http://www.123cha.com

  4. Alexander 說道:

    其實geoip就已經提供移植到資料庫的方法了
    並且精準到城市喔

  5. yesYouDo 說道:

    不知ip可以拿來做什麼用?
    可以介紹一下嗎?

  6. Neo 說道:

    Alexander:
    就我說知,Geoip 應該是提供 CSV 吧? 還是需要手動匯入資料庫。ip2nation 有個好處就是他的下載格式是 zip 檔,解開之後就是 sql 語法,做線上更新就很方便。

    只是 ip2nation 沒有城市倒是真的。^^

    yesYouDo:
    取得 IP 所在的國別,可以判別使用者的所在地區,自動顯示當地的語言、統計世界各地連入的人數,或是阻擋某個地區的 IP 連入...etc

  7. Steven 說道:

    這的確是挺方便的
    可以做一些有參考性的IP統計數據


搜尋

分類

歷史文章

贊助