以奇怪的格式获取PHP IP

时间:2018-03-01 21:43:25

标签: php ip

某些ips的格式为此格式

2600:646:8381:b627:71c1:bdf8:d

使用代码来检索ip

function get_ip_address(){
    foreach (array('HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'REMOTE_ADDR') as $key){
        if (array_key_exists($key, $_SERVER) === true){
            foreach (explode(',', $_SERVER[$key]) as $ip){
                $ip = trim($ip); // just to be safe

                if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE) !== false){
                    return $ip;
                }
            }
        }
    }
}

如果我只使用$_SERVER['REMOTE_ADDR'],则获得相同的值。不知道为什么它会为某些ips做这个或者这是什么格式。如果客户端以此格式返回相同的值,则无关紧要,因为我只需要一个唯一的标识符。感谢。

1 个答案:

答案 0 :(得分:1)

IPv6在这里;)

这是一个新的" IP地址格式。