堕落不振功业废,勤耕不辍日月新

PHP 查詢 IP 所屬國家

编程开发 hailen 4℃

要查詢 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 資料的例子。

freegeoip 回傳的資料, 除了國家名稱外, 也有國家代號, 區域, 城市, 郵政編號及時區等, 以下是回傳的參考資料:

{
"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
?>

以上方法除了可以在 PHP 使用外, 在其他程式語言 (如 Shell Script, Python) 使用也很方便, 如果需要查詢更詳細的 IP 資料, 例如 IP 所屬的網路供應商等, 便需要購買相關服務了。

转载请注明:我是IT » PHP 查詢 IP 所屬國家

喜欢 (0)or分享 (0)