Получение IP-адреса в php - PullRequest
       31

Получение IP-адреса в php

0 голосов
/ 11 ноября 2009

Я этот код для получения IP-адреса на моем locolhost, и я получаю

::1

результат

код:

function ip()
{
  if (!empty($_SERVER['HTTP_CLIENT_IP']))
  {
       $ip = $_SERVER['HTTP_CLIENT_IP'];
  } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
  {
    $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
  }
  else
  {
    $ip = $_SERVER['REMOTE_ADDR'];
  }
  return $ip;            
}

echo ip();

где ошибка?

На самом деле, я хочу получить название страны и города после того, как я получу IP ... Любое другое решение?

Спасибо

Ответы [ 4 ]

7 голосов
/ 11 ноября 2009

:: 1 - это сокращение для localhost, использующее терминологию IPv6, поэтому оно работает. Попробуйте подключиться, используя ваше имя хоста, и вы увидите, что изменение адреса будет более очевидным ...

2 голосов
/ 11 ноября 2009

Как пишет @Roland, это адрес IPv6. Если вы не собираетесь использовать IPv6 в своем приложении, вам следует указать веб-серверу прекратить прослушивание портов IPv6. Когда вы отправляете запрос, клиент сначала попробует IPv6, если он не работает, тогда он вернется к IPv4, и вы должны получить более знакомый вид 127.0.0.1.

2 голосов
/ 11 ноября 2009

Вы можете использовать следующее:

    $server_address = $_SERVER['SERVER_ADDR'];
    $port_used = $_SERVER['SERVER_PORT'];
    $ip_address = $_SERVER['REMOTE_ADDR'];

// on my test machine this gives the following results:

    $server_address = 127.0.0.1
    $port_used = 80
    $ip_address = 127.0.0.1
<ч />

Отредактировано: для включения аспекта геолокации вопроса, который я не заметил до тех пор, пока не представил исходный ответ.

Вместо того, чтобы повторять ответы, найденные в других местах, я сначала сошлюсь на этот (хорошо отвеченный) ТАК вопрос: google-geolocation-api-library , а затем на страницу результатов Google с условиями поиска геолокация php-сайта: stackoverflow.com , которая ссылается на многие другие, вероятно, релевантные ответы, которые может лучше ответить на ваши вопросы, чем я могу.

0 голосов
/ 11 ноября 2009

Если вы напечатаете_r ($ _ SERVER), вы увидите, какая информация доступна, как она выглядит и какие поля могут быть пустыми.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...