是的,PHP 可以處理代理。要獲取用戶的真實 IP 地址,即使他們通過代理訪問,您可以使用 $_SERVER['HTTP_CLIENT_IP']
和 $_SERVER['HTTP_X_FORWARDED_FOR']
變量。但是,這些變量可能包含多個 IP 地址,因此您需要處理這些值以確保獲取正確的 IP 地址。
以下是一個 PHP 函數,用于獲取用戶的真實 IP 地址,即使他們通過代理訪問:
function getRealUserIp() {
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
// 取 X-Forwarded-For 中的第一個 IP 地址
$ip = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR'])[0];
} else {
$ip = $_SERVER['REMOTE_ADDR'];
}
return $ip;
}
$real_ip = getRealUserIp();
echo $real_ip;
請注意,HTTP_X_FORWARDED_FOR
可能包含一個 IP 地址列表,因此我們使用 explode()
函數將其拆分為數組,并取第一個元素作為用戶的真實 IP 地址。這通常是最可靠的,因為第一個 IP 地址通常是用戶的真實 IP 地址,而后續的 IP 地址可能是代理服務器的 IP 地址。