Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP中机器的IP地址为::1,但为什么?_Php_Ip Address - Fatal编程技术网

PHP中机器的IP地址为::1,但为什么?

PHP中机器的IP地址为::1,但为什么?,php,ip-address,Php,Ip Address,我正在尝试通过php获取我的机器的ip地址。为此,我编写了如下代码: <?php echo "<br />".$_SERVER['REMOTE_ADDR'];?> 但这段代码不起作用。它正在返回“::1”。 请帮助我如何获取实际IP地址。$\u SERVER['REMOTE\u ADDR']是客户端的IP地址 $\u SERVER['SERVER\u ADDR']是服务器的IP地址 参考资料:查看phpinfo()的输出。如果该地址不在该页面上,则无法通过PHP直

我正在尝试通过php获取我的机器的ip地址。为此,我编写了如下代码:

<?php echo  "<br />".$_SERVER['REMOTE_ADDR'];?>

但这段代码不起作用。它正在返回“
::1
”。
请帮助我如何获取实际IP地址。

$\u SERVER['REMOTE\u ADDR']是客户端的IP地址

$\u SERVER['SERVER\u ADDR']是服务器的IP地址


参考资料:

查看
phpinfo()
的输出。如果该地址不在该页面上,则无法通过PHP直接获取该地址。

如果您的意思是获取用户的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地址,而不考虑代理等。

::1
是实际IP。它是一个ipv6环回地址(即本地主机)。如果您使用的是ipv4,它将是
127.0.0.1


如果您想获得不同的IP地址,则需要通过不同的网络接口连接到服务器。

如果您试图运行localhost,此答案将解决您的问题。只有很少的变化

apache2/httpd.conf 
搜索所有“倾听”单词 例:

像这样做

Listen 127.0.0.1:80
然后重新启动apache

$_SERVER[REMOTE_ADDR]
将显示
收听127.0.0.1


您可以在这个简单的答案中看到答案:您正在本地服务器上使用它。 试着跑步

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执行器

$\u SERVER['REMOTE\u ADDR']
不是您机器的IP地址。可能的重复项:——或者如果您需要其他东西——是哪台机器的?运行PHP的服务器是什么?连接到服务器的浏览器正在运行的桌面?::1是localhost的别名
::1
是实际的IP。这是一个ipv6环回地址(即localhost)。它不是对所问问题的答案,但它很有用。我假设OP实际上就是这个意思,但我可能错了。我想他/她只是好奇为什么
$\u SERVER['REMOTE\u ADDR']
返回
::1
。也许我错了。这个答案非常不安全,因为任何人都可以设置一个“X-Forwarded-For”头并欺骗另一个IP。$http_client_IP=$_SERVER['http_client_IP']$http_x_forwarded_for=$_SERVER['http_x_forwarded_for']$远程地址=$\u服务器['remote\u addr'];if(!empty($http_client_ip)){$ip_address=$http_client_ip;}else if(!empty($http_x_forwarded_for)){$ip_address=$http_forwarded_;}else{$ip_address=$remote_addr;}echo$ip_address;'为什么突然投了反对票?这个答案表明这些信息对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();