Я пытаюсь получить ip-адрес моей машины через php. Для этого я пишу код вроде:
<?php echo "<br />".$_SERVER['REMOTE_ADDR'];?>
Но этот кусок кода не работает. Он возвращает "::1
".
Пожалуйста, помогите мне, как получить фактический IP-адрес.
Я пытаюсь получить ip-адрес моей машины через php. Для этого я пишу код вроде:
<?php echo "<br />".$_SERVER['REMOTE_ADDR'];?>
Но этот кусок кода не работает. Он возвращает "::1
".
Пожалуйста, помогите мне, как получить фактический IP-адрес.
::1
- это фактический IP. Это адрес обратной связи ipv6 (то есть localhost). Если вы используете ipv4, это будет 127.0.0.1
.
Если вы хотите получить другой IP-адрес, вам нужно будет подключиться к серверу через другой сетевой интерфейс.
Если вы пытаетесь запустить localhost, этот ответ исправит вашу проблему. Всего несколько изменений на
apache2/httpd.conf
искать все слова "listen" например:
Listen 80
Сделайте так.
Listen 127.0.0.1:80
чем перезапустить apache
$_SERVER[REMOTE_ADDR]
покажет Listen 127.0.0.1
вы можете увидеть ответ в этой подробной ссылке ответа
Если вы хотите получить 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-адрес пользователя, независимо от прокси и т.д.
$_ SERVER ['REMOTE_ADDR'] - это IP-адрес клиента.
$_ SERVER ['SERVER_ADDR'] - это IP-адрес сервера.
Ссылка: http://php.net/manual/en/reserved.variables.server.php
Простой ответ: вы используете его на локальном сервере. Попробуйте запустить
function getUserIpAddr(){
if(!empty($_SERVER['HTTP_CLIENT_IP'])){
//ip from share internet
$ip = $_SERVER['HTTP_CLIENT_IP'];
}elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
//ip pass from proxy
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
}else{
$ip = $_SERVER['REMOTE_ADDR'];
}
return $ip;
}
echo 'User Real IP - '.getUserIpAddr();
в реальном сервере. Или вы также можете использовать онлайн-исполнитель php.
Посмотрите на вывод phpinfo()
. Если адрес не указан на этой странице, адрес недоступен непосредственно через PHP.