Я хочу показать IP-адрес клиента компьютера. Но на моем компьютере, который работает в localhost, отображается только «:: 1». Если я запускаю в localhost, он должен быть показан 127.0.0.1. Итак, как показать IP-адрес, особенно в IPv4. Потому что я прочитал в другой статье, что :: 1 находится в IPv6. Вот мой код:
function get_ip() { if (!empty($_SERVER['HTTP_CLIENT_IP'])) //check ip from share internet { $ip=$_SERVER['HTTP_CLIENT_IP']; } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) //to check ip is pass from proxy { $ip=$_SERVER['HTTP_X_FORWARDED_FOR']; } else { $ip=$_SERVER['REMOTE_ADDR']; } return $ip; } $ip = get_ip(); echo $ip;
Дай мне помощь, чтобы исправить это. Спасибо.
Если вы хотите, чтобы веб-сервер увидел соединение с 127.0.0.1, вам необходимо подключиться через IPv4. Попробуйте перейти к http://127.0.0.1
вместо http://localhost
. Если вы подключаетесь через IPv6, то, конечно, веб-сервер сообщит адрес IPv6.
function getIP() { $ip = $_SERVER['SERVER_ADDR']; if (PHP_OS == 'WINNT'){ $ip = getHostByName(getHostName()); } if (PHP_OS == 'Linux'){ $command="/sbin/ifconfig"; exec($command, $output); $pattern = '/inet addr:?([^ ]+)/'; $ip = array(); foreach ($output as $key => $subject) { $result = preg_match_all($pattern, $subject, $subpattern); if ($result == 1) { if ($subpattern[1][0] != "127.0.0.1") $ip = $subpattern[1][0]; } } } return $ip; } echo getIP();