проблема с $ _SERVER ['REMOTE_ADDR'] - PullRequest
       12

проблема с $ _SERVER ['REMOTE_ADDR']

1 голос
/ 04 января 2011

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

Ответы [ 3 ]

12 голосов
/ 04 января 2011

Сначала вы должны запросить HTTP_X_FORWARDED_FOR, и если он не назначен, используйте REMOTE_ADDR.

4 голосов
/ 04 января 2011

@ Джеймс @ Имез

По умолчанию IP-адрес клиента находится в $ _SERVER ['REMOTE_ADDR']. Когда пользователь заходит на ваш сайт, используя PROXY-сервер (HTTP-шлюз), он сообщает вам, для кого он использует прокси-сервер (HTTP_X_FORWARDED_FOR), и дает свой собственный IP-адрес прокси в $ _SERVER ['REMOTE_ADDR'].

Анонимные прокси не будут использовать HTTP_X_FORWARDED_FOR или просто лгут вам.

Знать, что у вас есть настоящий IP-адрес клиента, невозможно.

2 голосов
/ 04 января 2011

Я должен отметить, что ключ массива чувствителен к регистру и должен быть в верхнем регистре:

var_dump($_SERVER['remote_addr']);
echo "\n";
var_dump($_SERVER['REMOTE_ADDR']);

Выход:

Notice: Undefined index: remote_addr in /home/adam/public_html/2011/01/04/foo.php on line 3
NULL

string(15) "10.0.1.51"

Я бы var_dump($_SERVER) просто оценил состояние вашего мира и пошел бы оттуда.

...