summer dreamer

全新的 香港中文版 WordPress 網站!

Note

PHP 查詢 IP 所屬國家

php-geoip

要查詢 IP 所屬國家, 一般上會用 IP 資料庫查詢, 網上也有一些網站可以免費查詢, 但如果想在自己的 PHP 程式, 查詢 IP 所屬國家, 便需要下載一些 IP 轉國家的資料庫, 有付費及免費。

另一個較簡單方便的做法, 是使用 API 查詢, 以下會示範使用 freegeoip.net 的免費服務查詢 IP 所屬國家的方法。

freegeoip.net 把供 CSV, XML 及 JSON 幾種格式的 API, 使用方法也很簡單, 例如想取得 8.8.8.8 的資料, 只要開啟以下網站:

CSV:
http://freegeoip.net/csv/8.8.8.8

XML:
http://freegeoip.net/xml/8.8.8.8

JSON:
http://freegeoip.net/json/8.8.8.8

以下是使用 PHP 內建的 json_decode() 函式, 讀取 freegeoip 的 JSON 資料的例子。

{
"ip":"8.8.8.8",
"country_code":"US",
"country_name":"United States",
"region_code":"",
"region_name":"",
"city":"",
"zip_code":"",
"time_zone":"",
"latitude":37.751,
"longitude":-97.822,
"metro_code":0
}

現在假設只要取得 country_name, 即國家名稱, 可以這樣寫:

<?php
// 定義要查詢的 IP
$ip = "8.8.8.8";
 
// 讀取 JSON 的資料
$result = json_decode(file_get_contents("http://freegeoip.net/json/" . $ip));
 
echo $result->country_name

Comments are Closed

Theme by Anders Norén