我有应该检测用户 IP 地址的 PHP 代码。下面的代码返回一个 IP 地址,但该 IP 地址有时是本地网络 IP(例如 10.0.0.1)而不是公共 IP。如何确保始终获得公共 IP?谢谢。顺便说一句,这段代码来自另一个 StackOverflow 帖子。此外,此代码用于通过 Internet 从完全独立的网络访问的网站,而不是我的 Apache Web 服务器。
if (isset($_SERVER["HTTP_CLIENT_IP"])){
$ip = $_SERVER["HTTP_CLIENT_IP"];
} elseif (isset($_SERVER["HTTP_X_FORWARDED_FOR"])){
$ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
} elseif (isset($_SERVER["HTTP_X_FORWARDED"])){
$ip = $_SERVER["HTTP_X_FORWARDED"];
} elseif (isset($_SERVER["HTTP_FORWARDED_FOR"])){
$ip = $_SERVER["HTTP_FORWARDED_FOR"];
} elseif (isset($_SERVER["HTTP_FORWARDED"])){
$ip = $_SERVER["HTTP_FORWARDED"];
} else {
$ip = $_SERVER["REMOTE_ADDR"];
}