PHP菜鸟问题 获取IP结果显示不正常

我使用$_SERVER['REMOTE_ADDR'] 获取IP的时候,返回的结果总是这种形式:

fe80::d48c:75d4:324:d431

这是什么情况?实在搞不懂...如何能得到正常的IP地址?

/**
 * 获取客户端IP地址
 * @return string
 */
function get_client_ip() {
    if(getenv('HTTP_CLIENT_IP')){
        $client_ip = getenv('HTTP_CLIENT_IP');
    } elseif(getenv('HTTP_X_FORWARDED_FOR')) {
        $client_ip = getenv('HTTP_X_FORWARDED_FOR');
    } elseif(getenv('REMOTE_ADDR')) {
        $client_ip = getenv('REMOTE_ADDR');
    } else {
        $client_ip = $_SERVER['REMOTE_ADDR'];
    }
    return $client_ip;
}  
/**

  • 获取服务器端IP地址  * @return string  */ function get_server_ip() {     if (isset($_SERVER)) {         if($_SERVER['SERVER_ADDR']) {             $server_ip = $_SERVER['SERVER_ADDR'];         } else {             $server_ip = $_SERVER['LOCAL_ADDR'];         }     } else {         $server_ip = getenv('SERVER_ADDR');     }     return $server_ip; }

http://www.cnblogs.com/belie8/articles/2368957.html

function get_onlineip() {
$ch = curl_init('http://www.ip138.com/ip2city.asp');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$a = curl_exec($ch);
preg_match('/[(.*)]/', $a, $ip);
return $ip[1];
}

function get_onlineip() {
$onlineip = '';
if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {
$onlineip = getenv('HTTP_CLIENT_IP');
} elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {
$onlineip = getenv('HTTP_X_FORWARDED_FOR');
} elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {
$onlineip = getenv('REMOTE_ADDR');
} elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {
$onlineip = $_SERVER['REMOTE_ADDR'];
}
return $onlineip;
}

你获取到的其实就是IP地址 应该是ipv6的地址

你获取到的其实就是IP地址 应该是ipv6的地址

你获取到的其实就是IP地址 应该是ipv6的地址