我想通過php獲取我的機器的IP地址。爲此,我寫的代碼是這樣的:PHP中機器的IP地址給出:: 1,但是爲什麼?
<?php echo "<br />".$_SERVER['REMOTE_ADDR'];?>
但是這段代碼不起作用。它返回「::1
」。 請幫助我如何獲得實際的IP地址。
我想通過php獲取我的機器的IP地址。爲此,我寫的代碼是這樣的:PHP中機器的IP地址給出:: 1,但是爲什麼?
<?php echo "<br />".$_SERVER['REMOTE_ADDR'];?>
但是這段代碼不起作用。它返回「::1
」。 請幫助我如何獲得實際的IP地址。
::1
是實際的IP。它是一個ipv6回送地址(即本地主機)。如果您使用的是ipv4,它將是127.0.0.1
。
如果您想獲得不同的IP地址,則需要通過不同的網絡接口連接到服務器。
好,非常感謝。這對我來說是新的。再次感謝。 – John
$ _SERVER ['REMOTE_ADDR']是客戶端的IP地址。
$ _SERVER ['SERVER_ADDR']是服務器的IP地址。
看的phpinfo()
輸出。如果該地址不在該頁面上,則該地址不能直接通過PHP獲得。
'$ 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 ;」 –
爲什麼突然downvote?這個答案顯示,**是**或**的信息不適用於PHP。 – dotancohen
如果你的意思是讓用戶的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地址,無論代理等
如果您嘗試運行本地主機,此答案將解決您的問題。在
apache2/httpd.conf
搜索只是一些改變一切 「聽」 字 例如:
Listen 80
作出這樣。
Listen 127.0.0.1:80
比重新啓動你的Apache
$_SERVER[REMOTE_ADDR]
將顯示Listen 127.0.0.1
你可以看到答案在此detailed answer link
'$ _ SERVER [ 'REMOTE_ADDR']'不是的IP地址你的機器。 – hakre
可能的重複:[使用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
什麼機器?您運行PHP的服務器?瀏覽器連接到服務器的桌面正在運行? – Quentin