以下是單PHP文件代碼
<?php
// 檢查是否通過代理服務(wù)器訪問
if (!empty($_SERVER[‘HTTP_CLIENT_IP’])) {
$ip = $_SERVER[‘HTTP_CLIENT_IP’];
} elseif (!empty($_SERVER[‘HTTP_X_FORWARDED_FOR’])) {
$ip = $_SERVER[‘HTTP_X_FORWARDED_FOR’];
} else {
$ip = $_SERVER[‘REMOTE_ADDR’];
}
// 顯示IP地址
echo htmlspecialchars($ip, ENT_QUOTES, ‘UTF-8’);
?>
解釋:
- ?
$_SERVER['HTTP_CLIENT_IP']
?:有時用于共享的互聯(lián)網(wǎng)訪問,例如通過某些代理服務(wù)器。 - ?
$_SERVER['HTTP_X_FORWARDED_FOR']
?:通過代理服務(wù)器時的原始IP地址。 - ?
$_SERVER['REMOTE_ADDR']
?:直接訪問時的IP地址。
安全注意事項:
- 使用?
htmlspecialchars
?函數(shù)對用戶輸出的內(nèi)容進(jìn)行轉(zhuǎn)義,以防止XSS(跨站腳本攻擊)。 - IP地址可以被偽造,特別是當(dāng)請求通過不受信任的代理服務(wù)器發(fā)送時。因此,不要依賴IP地址進(jìn)行安全相關(guān)的決策。
將上述代碼保存為一個PHP文件(例如?show_ip.php
),然后在服務(wù)器上執(zhí)行它,訪問該文件時就會顯示訪問者的IP地址。