2012-05-09 48 views
24

我想通过php获取我的机器的IP地址。为此,我写的代码是这样的:PHP中机器的IP地址给出:: 1,但是为什么?

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

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

+0

'$ _ SERVER [ 'REMOTE_ADDR']'不是的IP地址你的机器。 – hakre

+0

可能的重复:[使用PHP识别服务器IP地址](http://stackoverflow.com/questions/5800927/identify-server-ip-address-with-php) - 或者如果您需要其他的东西 - [如何我用PHP找到用户的IP地址?](http://stackoverflow.com/questions/55768/how-do-i-find-a-users-ip-address-with-php) – hakre

+0

什么机器?您运行PHP的服务器?浏览器连接到服务器的桌面正在运行? – Quentin

回答

39

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

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

+0

好,非常感谢。这对我来说是新的。再次感谢。 – John

-2

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

+0

'$ http_client_ip = $ _SERVER ['HTTP_CLIENT_IP']; $ http_x_forwarded_for = $ _ SERVER ['HTTP_X_FORWARDED_FOR']; $ remote_addr = $ _ SERVER ['REMOTE_ADDR']; if(!空($ http_client_ip)) {$ IP_ADDRESS = $ http_client_ip;} 否则,如果(!空($ HTTP_X_FORWARDED_FOR)) {$ IP_ADDRESS = $ HTTP_X_FORWARDED_FOR;} 其他 {$ IP_ADDRESS = $ REMOTE_ADDR;} 回声$ IP_ADDRESS ;” –

+1

为什么突然downvote?这个答案显示,**是**或**的信息不适用于PHP。 – dotancohen

5

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

+0

这并不是对问题的回答,而是有用的。 – Leri

+0

我认为这就是OP的意思,但我可能是错的 –

+0

我认为他/她只是好奇为什么'__ SERVER ['REMOTE_ADDR']'返回':: 1'。也许我错了。无论我从哪里+1。 – Leri

5

如果您尝试运行本地主机,此答案将解决您的问题。在

apache2/httpd.conf 

搜索只是一些改变一切 “听” 字 例如:

Listen 80 

作出这样。

Listen 127.0.0.1:80 

比重新启动你的Apache

$_SERVER[REMOTE_ADDR] 

将显示Listen 127.0.0.1

你可以看到答案在此detailed answer link

相关问题