我想显示计算机客户端的IP地址。但是在我的计算机中,在本地主机中仅显示"::1"。如果我在本地主机中运行,它应该显示 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;
给我帮助解决这个问题。谢谢。
如果您希望 Web 服务器看到您从 127.0.0.1 连接,则必须通过 IPv4 进行连接。 尝试导航到 http://127.0.0.1
而不是 http://localhost
。 如果您通过IPv6进行连接,那么Web服务器当然会报告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();