Как мне найти мой реальный IP-адрес в PHP (получение IP-адреса сервера, а не IP-адрес посетителя)

Как узнать свой настоящий IP-адрес?

If I do:-

$_SERVER['REMOTE_ADDR']

Это дает мне неправильный IP-адрес (157.191.122.36), который я проверил, поскольку он дает мне одинаковые значения, даже когда доступ к моему сайту осуществляется из разных мест и стран.

Каким-то образом это место дает мне правильный IP-адрес (64.74.66.230) по адресу http://www.whatismyip.com/, но я не могу получить то же значение с помощью приведенного выше PHP-кода.

РЕДАКТИРОВАТЬ

Я попробовал URL, упомянутый в комментарии. Ни одно из решений не сработало для меня. Однако теперь ясно, что при использовании $_SERVER["REMOTE_ADDR"] я получаю IP-адрес сервера, а не посетителя.


person Steve    schedule 25.06.2013    source источник
comment
stackoverflow .com/questions/4262081/   -  person vikingmaster    schedule 26.06.2013
comment
похоже, что есть прокси на пути ... зависит от хоста   -  person immulatin    schedule 26.06.2013
comment
Могу ли я пройти через это? Такие сайты, как whatismyip.com, могут и делают это.   -  person Steve    schedule 26.06.2013
comment
@Jari, ни один из них не отвечает на мой вопрос ...   -  person Steve    schedule 26.06.2013
comment
Используя squid, сайт, на который вы ссылаетесь, по-прежнему показывает IP-адрес моего прокси-сервера и говорит, что прокси-сервер не обнаружен, потому что я так настроил свою настройку squid. В этом смысл прокси.   -  person Hydra IO    schedule 26.06.2013


Ответы (1)


$_SERVER['REMOTE_ADDR'] — это единственный надежный IP-адрес, который вы получите. Он извлекается непосредственно из стека TCP и является местом, откуда было установлено текущее соединение. Это означает, что если пользователь подключается через прокси, вы получите адрес прокси, а не пользователя.

Любые другие основанные на заголовках ненадежны, поскольку заголовки HTTP тривиально подделать. Вы можете использовать информацию от них, если хотите, если вы не ДОВЕРЯЕТЕ ей.

источник: определенный способ получить IP-адрес пользователя php

person Community    schedule 25.06.2013
comment
Но в моем случае это определенно ненадежно, и другие сайты (например, whatsmyip.com) показывают мне правильный адрес ... Как они это делают ... - person Steve; 26.06.2013
comment
Если они используют прозрачный прокси-сервер, вы никогда не сможете увидеть их реальный IP-адрес .... в этом суть. - person Hydra IO; 26.06.2013
comment
Привет Гидра, Спасибо за ваш комментарий. Не могли бы вы помочь в том, как я могу использовать это на моей странице на основе PHP? Спасибо. - person Steve; 26.06.2013
comment
Поговорите с вашей хостинговой компанией и спросите их о том, есть ли у них прокси-сервер перед вашим веб-сервером, и как вы должны получить IP-адрес клиента. Вы, вероятно, можете использовать $_SERVER['HTTP_X_FORWARDED_FOR'], который представляет собой список IP-адресов, разделенных запятыми, которые отправлялись на прокси-сервер для переадресации запроса (например, в браузере идет на прокси-сервер, который идет на ВАШ прокси-сервер, который идет на ваш сервер - два прокси, два перенаправления , возможно, два IP-адреса, и вам нужен только тот, который обнаружил ВАШ прокси-сервер, а не множество адресов 10.0.0.0/8 частных сетей.) - person Sven; 26.06.2013
comment
Когда я использовал $_SERVER['HTTP_X_FORWARDED_FOR'], я получаю Undefined index: HTTP_X_FORWARDED_FOR in require_once() ... Не знаю, смогу ли я получить IP-адрес посетителя, поскольку я перепробовал почти все ... Я не знаю, как эти внешние службы могут получить правильный IP-адрес ... - person Steve; 26.06.2013