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

Joh*_*ohn 34 php ip-address

我试图通过PHP获取我的机器的IP地址.为此,我写的代码如下:

<?php echo  "<br />".$_SERVER['REMOTE_ADDR'];?>
Run Code Online (Sandbox Code Playgroud)

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

Que*_*tin 59

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

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


小智 10

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

apache2/httpd.conf 
Run Code Online (Sandbox Code Playgroud)

搜索所有"听"字ex:

Listen 80
Run Code Online (Sandbox Code Playgroud)

这样做.

Listen 127.0.0.1:80
Run Code Online (Sandbox Code Playgroud)

而不是重启你的apache

$_SERVER[REMOTE_ADDR]
Run Code Online (Sandbox Code Playgroud)

将会呈现 Listen 127.0.0.1

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


Gui*_*dre 7

如果您的意思是获取用户的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;?>
Run Code Online (Sandbox Code Playgroud)

它将获得用户的实际IP地址,无论代理等.

  • 这个答案非常不安全,因为任何人都可以设置"X-Forwarded-For"标头并欺骗另一个IP. (3认同)