本文提供一套完整的 PHP IP 歸屬地查詢解決方案,整合了前端表單驗證、後端邏輯處理、淘寶 IP 庫 API 串接以及偽靜態配置。適用於需要快速部署 IP 查詢功能的專案。
包含一個支援 IP 與域名雙模式輸入的表單,採用 JavaScript 進行即時格式校驗:
function get_real_ip() {
// 依序檢查代理頭部,防止偽造
if (getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {
$ip = getenv('HTTP_CLIENT_IP');
} elseif (getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {
$ip = getenv('HTTP_X_FORWARDED_FOR');
} elseif (getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {
$ip = getenv('REMOTE_ADDR');
} elseif (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {
$ip = $_SERVER['REMOTE_ADDR'];
}
// 正則提取純 IP
return preg_match('/[\d.]{7,15}/', $ip, $matches) ? $matches[0] : false;
}
function is_ip($str) {
$ip = explode(".", $str);
if (count($ip) != 4) return false;
foreach ($ip as $seg) {
if (!is_numeric($seg) || $seg < 0 || $seg > 255) return false;
}
return true;
}
function ipdata($ip, $name = "0") {
$url = "https://ip.taobao.com/service/getIpInfo.php?ip=" . $ip;
// 使用 SAE 專用 fetchurl
$f = new SaeFetchurl();
$content = $f->fetch($url);
if ($f->errno() != 0) return false;
$data = json_decode($content);
if ($data->code != 0) return false; // API 返回錯誤
$ipdata = $data->data;
// 根據參數返回不同粒度資訊
switch ($name) {
case "all": return $ipdata;
case "0": return $ipdata->country . $ipdata->region . $ipdata->city . $ipdata->isp;
case "1": return $ipdata->country;
case "3": return $ipdata->region;
case "4": return $ipdata->city;
case "6": return $ipdata->isp;
default: return $ipdata->country;
}
}
{
"code": 0, // 0:成功 1:失敗
"data": {
"ip": "210.75.225.254",
"country": "中國",
"area": "華北",
"region": "北京市",
"city": "北京市",
"county": "",
"isp": "電信",
"country_id": "86",
"area_id": "100000",
"region_id": "110000",
"city_id": "110000",
"county_id": "-1",
"isp_id": "100017"
}
}
RewriteEngine on
RewriteRule ^(.*)$ index.php?id=$1 [L]
- rewrite: if (!is_dir() && !is_file() && path ~ "/(.*)" ) goto "index.php?$1"
is_ip(),防繞過攻擊。本方案提供了從前端到後端、從開發環境到生產部署的完整鏈路。核心價值在於封裝了穩健的 IP 獲取邏輯、標準化的 API 適配層以及靈活的結果輸出介面,開發者可直接整合至現有專案或作為微服務獨立部署。