Как получить IP-адрес клиента - PullRequest
4 голосов
/ 10 августа 2010

Я пытался получить IP-адрес клиента, просматривающего сайт с помощью $_SERVER['REMOTE_ADDR'], но я не получаю точный IP-адрес клиента Пожалуйста, помогите мне ... Спасибо

Ответы [ 4 ]

5 голосов
/ 10 августа 2010
$_SERVER['REMOTE_ADDR'] 

- лучшее, что вы получите на самом деле.

Существуют различные другие заголовки, которые могут быть отправлены клиентом (HTTP_FORWARDED_FOR и др.) - см. этот вопрос для полного обзора - но они могут свободно управляться клиентом и не , чтобы считаться надежными.

3 голосов
/ 30 июля 2012

// Получить реальный IP-адрес клиента

function getIP() {
    if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")) {
        $ip = getenv("HTTP_CLIENT_IP");
    } else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")) {
        $ip = getenv("HTTP_X_FORWARDED_FOR");
    } else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")) {
        $ip = getenv("REMOTE_ADDR");
    } else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")) {
        $ip = $_SERVER['REMOTE_ADDR'];
    } else {
        $ip = "unknown";
    }
    return($ip);
}
1 голос
/ 10 августа 2010

Если пользователь находится за прокси, вы получите IP прокси. Тогда IP-адрес пользователя будет одним из следующих (вам нужно проверить оба): $ _SERVER [ 'HTTP_CLIENT_IP'] $ _SERVER [ 'HTTP_X_FORWARDED_FOR']

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

1 голос
/ 10 августа 2010

IP-адрес, который видит сервер, является общедоступным IP-адресом клиента. Если они находятся за маршрутизатором NAT, у них будет другой адрес в их сети.

Если вы запустите ipconfig (Windows) или ifconfig (Unix-y системы) на клиентском компьютере, вы получите их локальный IP-адрес. Если он находится в диапазонах 192.168.x.x или 10.x.x.x, они находятся за маршрутизатором NAT, и Интернет увидит, что они приходят с другого адреса.

...