44

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

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

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

4

6 回答 6

80

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

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

于 2012-05-09T13:48:38.840 回答
13

如果您尝试运行 localhost,此答案将解决您的问题。只需少量更改

apache2/httpd.conf 

搜索所有“听”字例如:

Listen 80

做成这样。

Listen 127.0.0.1:80

比重新启动你的 apache

$_SERVER[REMOTE_ADDR]

将会呈现 Listen 127.0.0.1

你可以在这个详细的答案链接中看到答案

于 2016-01-21T13:13:26.490 回答
8

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

于 2012-05-09T13:47:05.310 回答
4

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

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

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

于 2012-05-09T13:46:07.480 回答
-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 执行器。

于 2018-04-27T04:37:06.227 回答
-2

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

于 2012-05-09T13:46:25.943 回答