【问题标题】:Get the ip address of client in php在php中获取客户端的ip地址
【发布时间】:2018-07-27 01:38:47
【问题描述】:

我正在使用以下函数来获取客户端的IP地址。

function get_client_ip() {
    $ipaddress = '';
    if (isset($_SERVER['HTTP_CLIENT_IP']))
        $ipaddress = $_SERVER['HTTP_CLIENT_IP'];
    else if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
        $ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
    else if(isset($_SERVER['HTTP_X_FORWARDED']))
        $ipaddress = $_SERVER['HTTP_X_FORWARDED'];
    else if(isset($_SERVER['HTTP_FORWARDED_FOR']))
        $ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
    else if(isset($_SERVER['HTTP_FORWARDED']))
        $ipaddress = $_SERVER['HTTP_FORWARDED'];
    else 

    if(isset($_SERVER['REMOTE_ADDR']))
        $ipaddress = $_SERVER['REMOTE_ADDR'];

    else
        $ipaddress = 'UNKNOWN';

    return $ipaddress;
}

但我检查了结果,它给我的 IP 地址与服务器上的机器 IP 地址不同。(我认为这是我的组织服务器的 IP)任何解决方案我都可以获得我的客户端的真实 IP 地址。 编辑可能重复:我已阅读可能重复问题的答案。 我的问题是它没有给我机器的 IP 地址。

Edit-2 实时链接 http://stashad.com/nodegates/voter.php?incr=blockvotes

【问题讨论】:

标签: php ip voting-system


【解决方案1】:

试试这个sn-p,

如果您的计算机是本地主机或连接到网络,则显示其原始 IP

function getIP($ip = null, $deep_detect = TRUE){
    if (filter_var($ip, FILTER_VALIDATE_IP) === FALSE) {
        $ip = $_SERVER["REMOTE_ADDR"];
        if ($deep_detect) {
            if (filter_var(@$_SERVER['HTTP_X_FORWARDED_FOR'], FILTER_VALIDATE_IP))
                $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
            if (filter_var(@$_SERVER['HTTP_CLIENT_IP'], FILTER_VALIDATE_IP))
                $ip = $_SERVER['HTTP_CLIENT_IP'];
        }
    } else {
        $ip = $_SERVER["REMOTE_ADDR"];
    }
    return $ip;
}

用法

echo getIP();

如果 deep_detect 设置为 TRUE 检查客户端 IP 是否被转发

echo getIP(null,true);

【讨论】:

    【解决方案2】:

    您的计算机没有直接连接到服务器;它通过中间设备进行连接,例如路由器或大公司的网关。

    服务器一般只能获取连接设备的IP地址。在某些情况下,负载均衡器之类的东西会在请求中添加包含原始 IP 地址(例如HTTP_X_FORWARDED_FOR)的标头,但我认为这些通常不会包含发出请求的机器的私有 IP 地址。

    如果您看下图,您是其中一台计算机,但路由器实际连接到服务器,而不是您的计算机本身。

    【讨论】:

      猜你喜欢
      • 2013-07-07
      • 2021-10-22
      • 2019-01-14
      相关资源
      最近更新 更多