PHP: получение IP-адресов - PullRequest
       20

PHP: получение IP-адресов

3 голосов
/ 14 апреля 2010

Я хочу получить IP-адреса посетителей. не могли бы вы сказать мне, какой элемент $_SERVER[] я должен использовать?

$_SERVER['HTTP_CLIENT_IP'];
$_SERVER['HTTP_X_FORWARDED_FOR'];
or
$_SERVER['REMOTE_ADDR'];

спасибо

UPDATE:

Если ваш клиент подключен к Интернету через прокси-сервер, то $ _SERVER ['REMOTE_ADDR'] в PHP просто возвращает IP-адрес прокси-сервера, а не компьютера клиента. Есть дополнительные переменные сервера, которые могут быть доступны определить точный IP-адрес компьютера клиента в PHP, это HTTP_CLIENT_IP и HTTP_X_FORWARDED_FOR.

Ответы [ 3 ]

5 голосов
/ 14 апреля 2010

$_SERVER['REMOTE_ADDR'];

Согласно документации PHP : IP-адрес, с которого пользователь просматривает текущую страницу.

Это IP-адрес, который подключен к вашему серверу (сообщается вашим сервером).
Другие значения устанавливаются клиентом.

HTTP_X_FORWARDED_FOR - это нестандартный заголовок (отсюда и префикс x), устанавливаемый некоторыми прокси-серверами. Это попытка крупных поставщиков прокси-серверов помочь интернет-провайдерам идентифицировать ненадлежащие IP-адреса; содержит список всех переадресованных IP-адресов.

Я не знаю происхождение заголовка HTTP_CLIENT_IP

2 голосов
/ 14 апреля 2010

Это зависит от того, находится ли ваше приложение за обратным прокси или чем-то в этом роде. Проще всего проверить все три и выбрать тот, который не относится к вашим IP-адресам.

1 голос
/ 23 сентября 2016

Используйте это:

function getIP() {
  foreach (array('HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'REMOTE_ADDR') as $key) {
    if (array_key_exists($key, $_SERVER) === true) {
        foreach (explode(',', $_SERVER[$key]) as $ip) {
           if (filter_var($ip, FILTER_VALIDATE_IP) !== false) {
              return $ip;
           }
        }
     }
   }
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...