有可能用PHP获取网络地址吗?

时间:2012-08-28 14:09:16

标签: php ip

  

可能重复:
  Getting Users Real IP address using PHP

我在网站上有一个脚本,可以在客户离开页面时保存有关客户端的一些信息。是否可以获取他的网络地址,例如192.168.1.154

我在论坛上看到了关于这个问题的讨论,他们说要使用$_SERVER['HTTP_X_FORWARDED_FOR'],但它不起作用!它向我展示了我的真实IP。

我该怎么做?

5 个答案:

答案 0 :(得分:2)

$_SERVER['REMOTE_ADDR']

文档http://php.net/manual/en/reserved.variables.server.php

如果客户将从本地网络访问您,您将获得192.168.*.*,否则远程IP如35.88.33.11

答案 1 :(得分:2)

使用此功能:

<?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
            }
    );

});

希望这有帮助。

答案 2 :(得分:2)

如果您的服务器位于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())

答案 3 :(得分:0)

这是不可能的服务器端。像192.168.1.154这样的地址不可路由,因此服务器对它们一无所知。某些路由器可能设置了HTTP_X_FORWARDED_FOR标头,但您不应指望它。除非脚本仅在本地网络上运行,否则Peter Szymkowski建议。

有关NAT

的更多信息,请参阅https://superuser.com/questions/63124/is-it-possible-to-get-the-nat-ip-address

答案 4 :(得分:0)

我会看到var_dump($_SERVER);的哪个参数显示您的网络IP。