// 正確調用方式(靜態方法調用) $ip = get_client_ip(); // 返回客戶端 IP 字符串 // 常見錯誤寫法 $ip = $ip->get_client_ip(); // 錯誤!不是對象方法
函數位於框架公共函數庫,自動處理代理頭(HTTP_X_FORWARDED_FOR、HTTP_CLIENT_IP 等),返回真實客戶端 IP。
ThinkPHP/Lib/ORG/Net/IpLocation.class.php
public function getlocation($ip = '')
$ip:可選,默認查詢客戶端 IP$location['ip']; // 查詢的 IP $location['country']; // 國家 $location['area']; // 區域/省市/ISP
import('ORG.Net.IpLocation');
$ip = new IpLocation();
$location = $ip->getlocation(); // 省略參數自動獲取客戶端 IP
if ($location) {
echo "國家:{$location['country']}
";
echo "地區:{$location['area']}
";
} else {
echo "無法查詢到地址信息";
}
import('ORG.Net.IpLocation');
$ip = new IpLocation();
$ipAddr = '202.38.68.68'; // 或域名 'www.example.com'
$location = $ip->getlocation($ipAddr);
// 直接輸出使用
var_dump($location);
qqwry.dat 純真 IP 數據庫(需確保文件存在)IpLocation 類實現二分查找索引區,解析記錄區國家/地區信息# 定期下載最新 qqwry.dat 替換框架自帶文件 wget https://update.cz88.net/soft/qqwry.rar unrar x qqwry.rar cp qqwry.dat ThinkPHP/Lib/ORG/Net/
建議設置定時任務每月更新一次,保證查詢準確性。
內置數據庫精度有限(僅到市/ISP 級),高精度需求(街道級)建議接入:
ThinkPHP 提供了開箱即用的 get_client_ip() 和 IpLocation 類,滿足基礎 IP 獲取與歸屬地查詢需求。生產環境注意數據庫更新、查詢緩存、高精度場景接入第三方 API 三大要點。