在PHP机器的IP地址给:: 1,但为什么呢?在PHP机器的IP地址给:: 1,但为什么呢?(IP

2019-05-13 23:51发布

我试图通过PHP来取我的机器的IP地址。 对于我写的代码,如:

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

但是这段代码不能正常工作。 它返回“ ::1 ”。 请帮我如何获得实际的IP地址。

Answer 1:

::1是实际的IP。 这是一个IPv6的环回地址(即本地主机)。 如果你使用的是IPv4这将是127.0.0.1

如果你想获得一个不同的IP地址,那么你就需要通过不同的网络接口连接到服务器。



Answer 2:

如果你正在尝试到本地主机上运行,​​这个答案将解决您的问题。 在只有几变化

apache2/httpd.conf 

搜索所有“听”字例如:

Listen 80

作出这样。

Listen 127.0.0.1:80

比重新启动你的Apache

$_SERVER[REMOTE_ADDR]

将显示Listen 127.0.0.1

你可以看到答案在此详细的解答链接



Answer 3:

如果你的意思是让用户的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地址,无论代理等。



Answer 4:

$ _ SERVER [“REMOTE_ADDR”]是在客户端的IP地址。

$ _ SERVER [ 'SERVER_ADDR']是服务器的IP地址。

参考: http://php.net/manual/en/reserved.variables.server.php



Answer 5:

答案很简单:您正在使用其本地服务器上。 尝试运行

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



Answer 6:

看看输出phpinfo() 如果地址不在该网页上,然后在地址不可直接通过PHP。



文章来源: IP Address of the machine in PHP gives ::1 but why?