blue-elephpant
Время для прочтения: 0 мин. 46 сек.

PHP: определение IP адреса пользователя

Задача определения IP адреса пользователя достаточно часто встречается (например, для создания записи в логе), поэтому привожу в упрощенном виде свой метод.


/**
 * Получить данные из массива SERVER
 * @param null $key
 * @param null $default
 * @return null
 */
function getServer($key = null, $default = null) {
  if (null === $key) {
    return $_SERVER;
  }
  return (isset($_SERVER[$key])) ? $_SERVER[$key] : $default;
}

/**
 * Получить IP адрес клиента
 * @param boolean $proxy
 * @return string
 */
function getClientIp($proxy = true) {
  if ($proxy && getServer('HTTP_CLIENT_IP') != null) {
    $ip = getServer('HTTP_CLIENT_IP');
  } else if ($proxy && getServer('HTTP_X_FORWARDED_FOR') != null) {
    $ip = getServer('HTTP_X_FORWARDED_FOR');
  } else {
    $ip = getServer('REMOTE_ADDR');
  }
  return $ip;
}

Не делайте так! Доверяйте лишь заголовку REMOTE_ADDR. Пруфлинк

Для вставки кода используйте HTML-теги
<pre><code class="php">ваш код</code></pre>

Добавить комментарий

Такой e-mail уже зарегистрирован. Воспользуйтесь формой входа или введите другой.

Вы ввели некорректные логин или пароль

Извините, для комментирования необходимо войти.

4 комментария

по хронологии
по рейтингу сначала новые по хронологии

Очень нехороший способ. См. http://habrahabr.ru/post/158417/.

Автор
Кобзарёв Михаил

Так, вроде, у меня как раз код, аналогичный Zend Framework 1

Ну а в нём, как раз, очень небезопасный метод.

Автор
Кобзарёв Михаил

Точняк, плохо читал статью 🙂