Я пытаюсь получить ip-адрес моей машины через php. Для этого я пишу код вроде:
<?php echo "<br />".$_SERVER['REMOTE_ADDR'];?>
Но этот фрагмент кода не работает. Он возвращает « ::1
». Пожалуйста, помогите мне, как получить фактический IP-адрес.
::1
– фактический IP. Это адрес обратной связи ipv6 (т.е. localhost). Если вы используете ipv4, это будет 127.0.0.1
.
Если вы хотите получить другой IP-адрес, вам необходимо подключиться к серверу через другой сетевой интерфейс.
Если вы хотите получить IP-адрес пользователя, вы можете сделать что-то вроде:
<?php if(!empty($_SERVER['HTTP_CLIENT_IP'])){ $ip=$_SERVER['HTTP_CLIENT_IP']; } elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){ $ip=$_SERVER['HTTP_X_FORWARDED_FOR']; } else{ $ip=$_SERVER['REMOTE_ADDR']; } ?> <?php echo "<br />".$ip;?>
Он получит фактический IP-адрес пользователя, независимо от прокси и т. Д.
Если вы пытаетесь запустить localhost, этот ответ исправит вашу проблему. Всего несколько изменений на
apache2/httpd.conf
искать все «слушать» слова ex:
Listen 80
Сделайте так.
Listen 127.0.0.1:80
чем перезапустить апач
$_SERVER[REMOTE_ADDR]
покажет Listen 127.0.0.1
вы можете увидеть ответ в этом подробном ответе
$ _SERVER ['REMOTE_ADDR'] – это IP-адрес клиента.
$ _SERVER ['SERVER_ADDR'] – это IP-адрес сервера.
Ссылка: http://php.net/manual/en/reserved.variables.server.php
Посмотрите на вывод phpinfo()
. Если адрес не указан на этой странице, адрес недоступен непосредственно через PHP.