2010-12-15 69 views
0

如何获取我系统的IP地址?如何获取我系统的IP地址

我使用$ip_address=$_SERVER[REMOTE_ADDR];,但它返回我的本地主机IP地址而不是我系统的IP地址。

+0

查看http://www.suite101.com/content/socket-programming-gethostbyname-a19557 – InSane 2010-12-15 07:43:59

+0

您的服务器是否在本地机器上运行? ...因为它会给你相同的IP地址。 – Beaker 2010-12-15 07:40:38

+0

我通过互联网访问网络服务器,而不是通过本地网络 – Meena 2010-12-16 03:47:54

回答

2

如果您正在访问本地服务器,则您的本地IP地址是远程IP。 PHP给你正确的回应。

如果你想知道你的IP地址到互联网的其他地方,请转到Google,然后输入“What is my ip”。

2

$_SERVER['SERVER_ADDR']

的东西的完整列表,你可能会在$_SERVER超全局找见php docs

+0

这将给服务器地址,而不是他正在寻找的远程地址... – Beaker 2010-12-15 08:05:47

+0

@Ginamin:OP *是*寻找服务器地址,*不是*远程地址。这就是他的代码没有返回他期望的地址的原因。 – Lee 2010-12-15 08:29:53

+0

嗯...在我看来,他正在寻找远程地址。 “我如何得到我的系统IP地址”和“但它返回我的本地主机IP地址,而不是我的系统IP”给我似乎指向远程地址,但不用担心。他现在在这里有两个答案:) – Beaker 2010-12-15 08:36:15

1

该函数将确定真实的IP地址:

function ipCheck() { 
    if (getenv('HTTP_CLIENT_IP')) { 
     $ip = getenv('HTTP_CLIENT_IP'); 
    } 
    elseif (getenv('HTTP_X_FORWARDED_FOR')) { 
     $ip = getenv('HTTP_X_FORWARDED_FOR'); 
    } 
    elseif (getenv('HTTP_X_FORWARDED')) { 
     $ip = getenv('HTTP_X_FORWARDED'); 
    } 
    elseif (getenv('HTTP_FORWARDED_FOR')) { 
     $ip = getenv('HTTP_FORWARDED_FOR'); 
    } 
    elseif (getenv('HTTP_FORWARDED')) { 
     $ip = getenv('HTTP_FORWARDED'); 
    } 
    else { 
     $ip = $_SERVER['REMOTE_ADDR']; 
    } 
    return $ip; 
} 
+0

我正在访问我的本地服务器,所以它只返回服务器ip不是我的系统ip。是否有任何其他方式来做到这一点 – Meena 2010-12-15 07:57:22

0

逾期答复,但我希望它仍然可能能够帮助别人。我需要一个项目的系统ip,所以我很快就使用正则表达式来取消自定义函数。它适用于Ubuntu Linux(并且技术上可以在任何发行版/ Linux版本上运行)。

function getLocalIp(){ 
    $output = shell_exec('/sbin/ifconfig');   
    preg_match("/inet?[[:space:]]?addr:([0-9.]+)/", $output, $matches); 
    if(isset($matches[1])) 
     $ip = $matches[1]; 
    else 
     $ip = 0; 
    return $ip; 
} 

它要求:

  • 制作使用了shell_exec系统调用。
  • 使用正则表达式来查找内部IP地址的值。

如果您碰巧为Windows创建类似的东西或改进此功能的功能,请将您的代码与我们其他人分享。