Intereting Posts
Является ли htmlentities () доказательством пули? Выполнение скрипта bash через PhP дает другой результат по сравнению с выполнением вручную Получить расширение изображения из загруженного файла в Laravel Ошибка толерантного анализа HTML / XML / SGML в PHP Почему PHP в Windows не видит расширение php_intl.dll, даже если оно существует? Как отследить «Исключение, исключенное без фрейма стека в Unknown on line 0» в PHP? Почему «Допустимый размер памяти исчерпан»? $ _POST и $ _FILES пустые после загрузки файла AJAX Переопределить методы аутентификации laravel 4 для использования пользовательской функции hasing Kohana ORM – неправильное имя таблицы Установите максимальное время выполнения для exec () специально Доступ к xampp с одного компьютера на другой компьютер через интернет-адрес ip Отправка HTML-адреса электронной почты на php? Разрешения PHP mkdir () Изменение конфиденциальности старых сообщений Facebook с помощью Graph API

Мой IP-адрес неправильно отображается на домашнем сервере PHP

Хорошо достаточно просто

<?PHP echo $_SERVER[REMOTE_ADDR]; ?> 

Возможно, нет, я мой IP в настоящее время 72.184.212.85, однако код, выше которого я использую в системе IP-блокировки для сценария, показывает мой IP-адрес как мой домашний IP-адрес сервера 127.0.0.1

Поэтому, когда я перехожу к своему сценарию, мой IP показан как 127.0.0.1, но когда я перехожу на другие сайты, это показано как 72.184.212.85

Как я могу получить первое значение для показа на моем тестовом сервере?

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

Вы должны сделать свой сервер общедоступным, а затем получить доступ к нему из общего адреса. Я предполагаю, что вы в настоящее время используете localhost для доступа к вашему серверу?

запустите сервер, сообщите порт 8080, а затем переместите порт в своем маршрутизаторе, чтобы он был общедоступным в Интернете. Затем посетите веб-страницу / phpscript с сайта http://72.184.212.85:8080 вместо http: // localhost: 8080 .

Вот смешное решение, которое я бы не рекомендовал:

Зарегистрируйте домашний IP-адрес с доменным именем, а затем посмотрите, откуда этот запрос был отправлен через URL-адрес:

 $url = $_SERVER["SERVER_NAME"]; 

или

 $url = $_SERVER["HTTP_HOST"]; 

а затем выполните поиск dns этого результата, который должен вернуть зарегистрированный IP-адрес, т. е. ваш внешний IP-адрес.

  $ext_ip = gethostbyaddr($url); 

Единственная причина, по которой это не сработает (извините, если я ошибаюсь), если SERVER_NAME использует тот же метод, что и «REMOTE_HOST», который является обратным DNS-поиском, который не будет разрешен, так как ваш внутренний IP-адрес не будет быть зарегистрированным на это доменное имя. Простой способ проверить:

  phpinfo(); 

и посмотреть, что представляют собой переменные среды.