繁体   English   中英

如何获取我系统的IP地址

[英]How to get the my system's IP address

如何获得系统的IP地址?

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

如果要访问本地服务器,则您的本地IP地址就是远程IP。 PHP给您正确的答复。

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

$_SERVER['SERVER_ADDR']

有关在$_SERVER超全局变量中可能找到的内容的完整列表,请参见php文档

此功能将确定实际的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;
}

回复较晚,但我希望它仍然可以帮助某人。 我需要一个项目的系统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创建类似的东西或改善此功能的功能,请与我们其他人分享您的代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM