可能重複:
Getting Users Real IP address using PHP有可能使用PHP獲取網絡地址?
我對他離開頁面時節省約一個客戶端的一些信息網站的腳本。是否有可能獲得他的網絡地址,例如192.168.1.154
。
我在論壇上看到關於此的討論,他們說使用$_SERVER['HTTP_X_FORWARDED_FOR']
,但它不工作!它向我展示了我的真實IP。
我該怎麼做?
可能重複:
Getting Users Real IP address using PHP有可能使用PHP獲取網絡地址?
我對他離開頁面時節省約一個客戶端的一些信息網站的腳本。是否有可能獲得他的網絡地址,例如192.168.1.154
。
我在論壇上看到關於此的討論,他們說使用$_SERVER['HTTP_X_FORWARDED_FOR']
,但它不工作!它向我展示了我的真實IP。
我該怎麼做?
$_SERVER['REMOTE_ADDR']
文檔http://php.net/manual/en/reserved.variables.server.php
如果客戶端將訪問你的本地網絡,你會得到192.168.*.*
,否則遠程IP像35.88.33.11
但這表明我目前的IP也 – Mihai
使用此:
<?php
echo $_SERVER['REMOTE_ADDR']; //ip of visitor - you need this
echo $_SERVER['SERVER_ADDR']; //ip of server
?>
使用JSON你也可以使用下面的代碼獲取客戶端IP:
$(document).ready(function(){
//Service 1
$.getJSON("http://smart-ip.net/geoip-json?callback=?",
function(data){
alert(data.host);
}
);
//Service 2
$.getJSON("http://jsonip.appspot.com/?callback=?",
function (json){
alert("User ip: " + json.ip); // alerts the ip address
}
);
});
希望這有助於。
這是不可能的serverside。像192.168.1.154這樣的地址是不可路由的,所以服務器不知道它們。有些路由器可能會設置HTTP_X_FORWARDED_FOR頭,但不應該指望它。除非腳本只在本地網絡上運行,就像Peter Szymkowski所說的那樣。
看到https://superuser.com/questions/63124/is-it-possible-to-get-the-nat-ip-address有關NAT
更多信息我會看到var_dump($_SERVER);
顯示你的網絡IP的哪一個參數。
如果您的服務器位於NAT'd網絡之外,則無法獲取客戶端的內部本地IP。這不僅會帶來安全風險,還會打敗NAT的目的。
可以,如果你想自己的本地NAT'd IP,運行JavaScript,something like this may work:
function myIP(){
var yip2=java.net.InetAddress.getLocalHost();
var yip=yip2.getHostAddress();
return yip;
}//end myIP
alert("your machine's local network IP is "+ myIP())
問題是關於PHP .. !! – AlphaMale
@AlphaMale它不能做!這就是爲什麼會提供可行的解決方案。 –
這不適用於我的Chrome瀏覽器,並且在我的Firefox上我得到_your機器的本地網絡IP爲127.0.0.1_,這顯然不是我的NAT IP – user454322
你能解釋一下你的網絡地址是什麼意思?如果你的意思是MAC地址,我認爲不可能在服務器端獲得客戶端的mac。 – PCoder
就像192.168.1.154 – Mihai