php - 如何从访客那里获得真实 IP?

我正在使用这个 PHP 代码来获取访问者的 IP 地址:

<?php echo $_SERVER['REMOTE_ADDR']; ?>

但是,当他们使用代理时,我无法从访问者那里获得真实的 IP 地址。。在这种情况下,有什么方法可以获取访问者的 IP 地址吗?

最佳答案

试试这个 php 代码。

<?PHP

function getUserIP()
{
    // Get real visitor IP behind CloudFlare network
    if (isset($_SERVER["HTTP_CF_CONNECTING_IP"])) {
              $_SERVER['REMOTE_ADDR'] = $_SERVER["HTTP_CF_CONNECTING_IP"];
              $_SERVER['HTTP_CLIENT_IP'] = $_SERVER["HTTP_CF_CONNECTING_IP"];
    }
    $client  = @$_SERVER['HTTP_CLIENT_IP'];
    $forward = @$_SERVER['HTTP_X_FORWARDED_FOR'];
    $remote  = $_SERVER['REMOTE_ADDR'];

    if(filter_var($client, FILTER_VALIDATE_IP))
    {
        $ip = $client;
    }
    elseif(filter_var($forward, FILTER_VALIDATE_IP))
    {
        $ip = $forward;
    }
    else
    {
        $ip = $remote;
    }

    return $ip;
}


$user_ip = getUserIP();

echo $user_ip; // Output IP address [Ex: 177.87.193.134]


?>

https://stackoverflow.com/questions/13646690/

相关文章:

php - 将 stdClass 对象转换/转换为另一个类

php - 在 PHP 中如何清除 WSDL 缓存?

php - 使用 curl 下载大文件

php - 什么是 PHP 中的工厂设计模式?

javascript - 使用 onclick 执行 PHP 函数

php - 一起注释掉 HTML 和 PHP

php - 对 PHP 脚本的同时请求

php - 基于多个 ID 检索 Laravel 模型结果

php - PHP 中的 session_unset() 和 session_destroy() 有

php - 函数只返回字符串中的字母数字字符?