【问题标题】:IP Address of the machine in PHP gives ::1 but why?PHP 中机器的 IP 地址给出 ::1 但为什么呢?
【发布时间】:2012-05-18 01:03:20
【问题描述】:

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

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

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

【问题讨论】:

标签: php ip-address


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    如果您尝试运行 localhost,此答案将解决您的问题。

    上只有几处改动
    apache2/httpd.conf 
    

    搜索所有“听”字 例如:

    Listen 80
    

    像这样。

    Listen 127.0.0.1:80
    

    重启你的apache

    $_SERVER[REMOTE_ADDR]
    

    将显示Listen 127.0.0.1

    你可以在detailed answer link看到答案

    【讨论】:

      【解决方案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 地址,而不管代理等。

      【讨论】:

      • 这不是对所提问题的回答,而是有用的东西。
      • 我认为这就是 OP 的实际意思,但我可能错了
      • 我想他/她只是好奇为什么$_SERVER['REMOTE_ADDR'] 会返回::1。也许我错了。无论我 +1。
      • 这个答案非常不安全,因为任何人都可以设置“X-Forwarded-For”标头并欺骗另一个 IP。
      【解决方案4】:

      $_SERVER['REMOTE_ADDR'] 是客户端的 IP 地址。

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

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

      【讨论】:

        【解决方案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 执行器。

        【讨论】:

          【解决方案6】:

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

          【讨论】:

          • '$http_client_ip= $_SERVER['HTTP_CLIENT_IP']; $http_x_forwarded_for=$_SERVER['HTTP_X_FORWARDED_FOR']; $remote_addr=$_SERVER['REMOTE_ADDR']; if(!empty($http_client_ip)) {$ip_address=$http_client_ip;} else if(!empty($http_x_forwarded_for)) {$ip_address=$http_x_forwarded_for;} else {$ip_address=$remote_addr;} echo $ip_address;'
          • 为什么突然投反对票?这个答案表明信息 isis not 可供 PHP 使用。
          猜你喜欢
          • 2011-06-04
          • 1970-01-01
          • 2022-01-02
          • 2014-08-19
          • 1970-01-01
          • 2016-01-21
          相关资源
          最近更新 更多