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. Пруфлинк

Источник: https://www.kobzarev.com/programming/get-client-ip/

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

Суровый русский тимлид. Жил в Магадане, в офисе московских веб студий и в Тульской деревне. Виртуозно знает WordPress, PHP, ООП, Vue.js и вот это вот все. Делает крутые высоконагруженные сайты, поэтому уже почти захватил весь рынок WordPress разработки в России. Не дает никому делать сайты без спроса. Ведет блог о разработке, дайджест в телеграмме и в ВК. Любит сиськи, баню и радиоэлектронику. 100% патриот (но это не точно). Тролль 542 уровня. Ездит в отпуск раз в 5 лет.

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

%d такие блоггеры, как: