无法在PHP中为IPv6 / IPv4连接获取正确的客户端IP地址

时间:2017-04-25 16:16:58

标签: php nginx ubuntu-16.04

我遇到的问题是我无法正确确定客户端的IP地址。

我已经完成了以下问题How to get the client IP address in PHP?,但这并不能解决我的情况。

要求如下所示。

  1. 如果访问者从IPv4地址连接,脚本应该显示客户端的IPv4地址(这在下面给出的脚本中处理)
  2. 如果访问者从IPv6地址连接,脚本应该显示客户端的IPv6地址(下面给出的脚本将IPv6地址转换为IPv4,但没有给我正确的IPv6地址)
  3. 以下是捕获客户端IP地址的脚本。

    <?php
    function get_client_ip() 
    {
       $ipaddress = '';
        if (getenv('HTTP_CLIENT_IP'))
            $ipaddress = getenv('HTTP_CLIENT_IP');
        else if(getenv('HTTP_X_FORWARDED_FOR'))
            $ipaddress = getenv('HTTP_X_FORWARDED_FOR');
        else if(getenv('HTTP_X_FORWARDED'))
            $ipaddress = getenv('HTTP_X_FORWARDED');
        else if(getenv('HTTP_FORWARDED_FOR'))
            $ipaddress = getenv('HTTP_FORWARDED_FOR');
        else if(getenv('HTTP_FORWARDED'))
           $ipaddress = getenv('HTTP_FORWARDED');
        else if(getenv('REMOTE_ADDR'))
            $ipaddress = getenv('REMOTE_ADDR');
        else
            $ipaddress = 'UNKNOWN';
    
       return $ipaddress;
    } 
    echo get_client_ip();
    ?>
    

    我是否需要调整PHP / Ubuntu / NGINX配置或可能的A记录?

    有人可以指出我实现此功能的缺失是什么吗?我在PHP7,Ubuntu 16.04和NGINX

    由于

0 个答案:

没有答案