2012-05-09 77 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

相關問題