Я использовал $ _SERVER ['REMOTE_ADDR'] и возвращает IP-адрес клиента (IP-адрес, с которого пользователь просматривает текущую страницу), но теперь (и тот же код) он возвращает host ip address (я проверил ip-адрес с IP-адресом). проблема с хозяином или что? спасибо u.
ответ
Сначала вы должны запросить HTTP_X_FORWARDED_FOR
, и если не назначен, используйте REMOTE_ADDR
.
Теперь я использую HTTP_X_FORWARDED_FOR и возвращает правильный ip. но почему проблема с REMOTE_ADDR? – imez
Поскольку между вами и сервером есть прокси-сервер, вы получаете адрес прокси-сервера как REMOTE_ADDR. HTTP_X_FORWARDED_FOR - это IP-адрес клиента, использующий прокси-сервер. –
@imez: Поскольку @Rosh уже указал, что между вами и сервером должен быть прокси-сервер, и если вы запросите 'REMOTE_ADDR', вы получите IP-адрес прокси-сервера. Если вы сначала проверите «HTTP_X_FORWARDED_FOR», то много раз прокси-сервер заполнит его «реальным» IP-адресом. – James
Я должен отметить, что массив ключей чувствителен к регистру, и должны быть в верхнем регистре:
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)
только оценить состояние вашего мир, и идти оттуда.
@James @imez
По умолчанию клиент IP находится в $ _SERVER [ 'REMOTE_ADDR']. Когда пользователь входит на ваш сайт с помощью сервера PROXY (HTTP-шлюз), он сообщает вам, для кого он подключен (HTTP_X_FORWARDED_FOR), и предоставит его собственный прокси-сервер в $ _SERVER ['REMOTE_ADDR'].
Анонимные прокси будут пропускать HTTP_X_FORWARDED_FOR или просто лгать вам.
Зная, что у вас настоящий IP-клиент, невозможно.
Я сказал, что в своем комментарии к моему ответу. Это никогда не является * guarentee *, что настоящий IP-адрес находится в 'HTTP_X_FORWARDED_FOR', но, как я уже сказал, большую часть времени он есть. – James
@James: Ты просто быстрее меня ;-) - и исправьте –
что делать, если это происходит на localhost? как я знаю, я использую прокси (что, конечно, я не использую)? –
- 1. PHP $ _SERVER ['REMOTE_ADDR'] пусто
- 2. IPV6 нотация $ _SERVER ['REMOTE_ADDR']
- 3. $ _SERVER ['REMOTE_ADDR'] работает некорректно
- 4. $ _SERVER ['REMOTE_ADDR'] возвращает 127.0.0.1
- 5. $ _SESSION ['ip'] и $ _SERVER ['REMOTE_ADDR'] проблема с безопасностью
- 6. Почему $ _SERVER ['REMOTE_ADDR'] возвращает 127.0.0.1
- 7. Можно ли доверять $ _SERVER ['REMOTE_ADDR']?
- 8. PHP $ _SERVER ['REMOTE_ADDR'] иногда разрешает пустую строку
- 9. он PHP- $ _SERVER [ «REMOTE_ADDR»] усечение выхода
- 10. Как безопасно использовать $ _SERVER ['REMOTE_ADDR'] и $ _SERVER ['HTTP_USER_AGENT']
- 11. Сервер Ubuntu и PHP $ _SERVER ['REMOTE_ADDR']
- 12. Может ли $ _SERVER ['REMOTE_ADDR'] подделать произвольную строку?
- 13. Каковы возможные значения возврата для $ _SERVER ['REMOTE_ADDR'] ;?
- 14. $ _SERVER ['REMOTE_ADDR'] не дает правильный IP-адрес
- 15. $ _SERVER ['remote_addr'] возвращает частный IP-адрес
- 16. $ _SERVER [ «REMOTE_ADDR»] отличается от 2-х серверов
- 17. Почему $ _SERVER ['REMOTE_ADDR'] показывает неправильный ip?
- 18. Насколько точны GeoIP и $ _SERVER ['REMOTE_ADDR']?
- 19. $ _SERVER ['REMOTE_ADDR'] не возвращает IP-адрес
- 20. $ _SERVER ['REMOTE_ADDR'] не возвращает IP-адрес
- 21. Load Balancer $ _SERVER ['REMOTE_ADDR'] Не работает
- 22. Как установить подстановочный знак в $ _SERVER ['REMOTE_ADDR']?
- 23. проблема с $ _SERVER ['PHP_SELF']
- 24. Получить правильный IP-адрес с помощью $ _SERVER [ «REMOTE_ADDR»]
- 25. Как PHP заполняет $ _SERVER ['REMOTE_ADDR'] с IP-адресом клиента?
- 26. Получение Больше, чем 1ip при использовании $ _SERVER ['REMOTE_ADDR']
- 27. PHP $ _SERVER [ 'REMOTE_ADDR'] не работает правильно на окнах 7
- 28. Как использовать $ _SERVER ["REMOTE_ADDR"] в сервере PHP websocket
- 29. Безопасность входа: могу ли я доверять php $ _SERVER ['REMOTE_ADDR']?
- 30. Сохраняет пользователей $ _SERVER ['REMOTE_ADDR'] для идентификации этически okey?
Вы бы не посетили его у своего хозяина по совпадению? – TJHeuvel
Вы используете какой-то прокси? – Gumbo
нет. я проверил несколько раз. Я не использую прокси – imez