я использовал $ _SERVER ['REMOTE_ADDR'], и он возвращает IP-адрес клиента (IP-адрес, с которого пользователь просматривает текущую страницу), но теперь (и тот же код) возвращает IP-адрес хоста (я проверил ip-адрес с IP-адресом) , проблема с хозяином или что? Спасибо.
HTTP_X_FORWARDED_FOR
вы должны запросить HTTP_X_FORWARDED_FOR
и если он не назначен, используйте REMOTE_ADDR
.
@James @imez
По умолчанию IP-адрес клиента находится в $ _SERVER ['REMOTE_ADDR']. Когда пользователь входит на ваш сайт с помощью сервера PROXY (HTTP-шлюз), он сообщает вам, для кого он подключен (HTTP_X_FORWARDED_FOR), и предоставит его собственный прокси-сервер в $ _SERVER ['REMOTE_ADDR'].
Анонимные прокси будут пропускать HTTP_X_FORWARDED_FOR или просто лгать вам.
Знать, что у вас есть реальный IP-клиент, невозможно.
Я должен упомянуть, что ключ массива чувствителен к регистру и должен быть в верхнем регистре:
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)
просто оценить состояние вашего мира и перейти оттуда.