如何获取我系统的IP地址

时间:2010-12-15 07:38:25

标签: php ip

如何获取系统的IP地址?

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

4 个答案:

答案 0 :(得分:2)

如果您正在访问本地服务器,则您的本地IP地址是远程IP。 PHP正在为您提供正确的响应。

如果您想知道互联网其他部分的IP地址,请访问Google并输入“我的IP是什么”。

答案 1 :(得分:2)

$_SERVER['SERVER_ADDR']

有关您在$_SERVER超全球中可能找到的内容的完整列表,请参阅php docs

答案 2 :(得分: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;
}

答案 3 :(得分: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创建了类似内容或改进了此功能的功能,请与我们其他人分享您的代码。