2012-06-25 3 views
0

Я хочу показать IP-адрес клиента компьютера. Но на моем компьютере, который работает в localhost, отображается только «:: 1». Если я запускаю в localhost, он должен быть показан 127.0.0.1. Итак, как показать IP-адрес, особенно в IPv4. Потому что я прочитал в другой статье, что :: 1 находится в IPv6. Вот мой код:Как показать IP-адрес в IPv4, который показывает :: 1 на веб-странице

function get_ip() 
{ 
    if (!empty($_SERVER['HTTP_CLIENT_IP'])) //check ip from share internet 
    { 
     $ip=$_SERVER['HTTP_CLIENT_IP']; 
    } 
    elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) //to check ip is pass from proxy 
    { 
     $ip=$_SERVER['HTTP_X_FORWARDED_FOR']; 
    } 
    else 
    { 
     $ip=$_SERVER['REMOTE_ADDR']; 
    } 
    return $ip; 
} 

$ip = get_ip(); 

echo $ip; 

Помогите исправить это. Спасибо.

+1

_why_ должен ли он показывать 127.0.0.1, если вы подключаетесь через IPv6? – Wrikken

ответ

1

Если вы хотите, чтобы веб-сервер видел соединение с 127.0.0.1, вы должны подключиться через IPv4. Попробуйте перейти на http://127.0.0.1 вместо http://localhost. Если вы подключаетесь через IPv6, то , конечно,, веб-сервер сообщит адрес IPv6.

+1

@dinda Если вы подключаетесь к серверу через IPv6, то ** IPv4 вообще не участвует в подключении **, а отображение IPv4-адреса клиента не имеет смысла, поскольку с точки зрения сервера ** у клиента нет Адрес IPv4 **. Если вы хотите, чтобы «localhost» ссылался на 127.0.0.1, вам нужно будет отредактировать файл хостов и удалить «:: 1» из определения «localhost». – cdhowie

+0

Как отредактировать файл моих хостов и удалить :: 1 из определения локального хоста? Извините за слишком многого, потому что я новичок. Спасибо. – dinda

+0

как отредактировать файл моих хостов и удалить :: 1 из определения локального хоста? Извините за слишком многого, потому что я новичок. Спасибо. – dinda

0
function getIP() { 
    $ip = $_SERVER['SERVER_ADDR']; 

    if (PHP_OS == 'WINNT'){ 
     $ip = getHostByName(getHostName()); 
    } 

    if (PHP_OS == 'Linux'){ 
     $command="/sbin/ifconfig"; 
     exec($command, $output); 

     $pattern = '/inet addr:?([^ ]+)/'; 

     $ip = array(); 
     foreach ($output as $key => $subject) { 
      $result = preg_match_all($pattern, $subject, $subpattern); 
      if ($result == 1) { 
       if ($subpattern[1][0] != "127.0.0.1") 
       $ip = $subpattern[1][0]; 
      } 

     } 
    } 

    return $ip; 
} 

echo getIP(); 

 Смежные вопросы

  • Нет связанных вопросов^_^