最新公告
  • 欢迎您光临 我爱模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境! 立即加入钻石VIP
  • php怎么获取局域网ip

    正文概述 管理员   2025-09-07   4

    在 PHP 中获取本地局域网 IP 地址,可以使用 `$_SERVER` 上的信息。在 `$_SERVER` 上有一个变量是 `REMOTE_ADDR`,该变量包含访问当前脚本的客户机的 IP 地址。但是,在许多情况下,`REMOTE_ADDR` 变量将返回 Internet 上的公共 IP 地址,而不是局域网中的私有 IP 地址。但是,我们可以使用其他方法获取局域网 IP 地址。

    下面介绍两种方法。

    ## 方法一

    使用 `gethostbyname` 函数获取主机名的 IP 地址。`gethostbyname` 函数接受一个主机名作为参数,并返回与主机名关联的 IP 地址。通常,我们可以使用 `gethostname` 函数获取本地主机名,然后将主机名传递给 `gethostbyname` 函数,以获取相应的 IP 地址。这种方法的缺点是,如果服务器或主机名被多个 DNS 服务器解析,则该方法可能会错误地返回不正确的 IP 地址。

    下面是代码示例:

    ```php

    $ip = gethostbyname(gethostname());

    echo "局域网 IP 地址为:$ip";

    ## 方法二

    使用 `$_SERVER` 全局数组的内容筛选出本地 IP 地址。可以通过分析 `$_SERVER` 数组,筛选出 IP 地址为本地 IP 地址的条目。这种方法基于本地 IP 地址具有固定的格式和开头,因此它是一个更可靠和稳定的解决方案。

    下面是代码示例:

    ```php

    $ips = array();

    foreach (array('HTTP_X_FORWARDED_FOR', 'HTTP_CLIENT_IP', 'REMOTE_ADDR') as $key) {

    if (!empty($_SERVER[$key])) {

    $ips[] = trim($_SERVER[$key]);

    }

    }

    foreach ($ips as $ip) {

    if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE) !== false) {

    // 本地 IP 地址

    echo "局域网 IP 地址为:$ip";

    break;

    }

    }

    以上就是获取本地局域网 IP 地址的两种方法,根据情况选择适合自己的方法。

    PHP可以使用以下两种方式获取局域网IP地址:

    1. 使用$_SERVER变量获取局域网IP

    PHP的$_SERVER变量保存了一些有关当前运行脚本的信息,包括当前的请求和服务器信息。其中,$_SERVER['SERVER_ADDR']保存了服务器的本地IP地址,也就是局域网IP地址。可以使用以下代码获取局域网IP:

    $localIP = $_SERVER['SERVER_ADDR'];

    echo $localIP;

    2. 使用socket连接获取局域网IP

    使用socket连接也可以获取局域网IP地址。步骤如下:

    1. 创建一个UDP套接字

    $sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);

    2. 向外部地址发送数据包

    socket_sendto($sock, "data", 4, 0, "8.8.8.8", 53);

    其中,"8.8.8.8"可以是其它任何已知的外部IP地址,如"114.114.114.114"等。

    3. 获取本地IP地址

    socket_getsockname($sock, $localIP);

    echo $localIP;

    完整代码如下:

    $sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);

    socket_sendto($sock, "data", 4, 0, "8.8.8.8", 53);

    socket_getsockname($sock, $localIP);

    echo $localIP;

    注意事项:

    1. 运行该代码需要开启socket扩展。

    2. 如果使用socket连接获取局域网IP地址时,如果发送的数据包没有收到回应,获取的IP地址可能会是127.0.0.1。可以使用多次重试和异常处理等方式提高获取局域网IP地址的成功率。


    我爱模板网 » php怎么获取局域网ip

    发表评论

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者
    script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?587cc1e5c052b5b0ce99533beff13c96"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })();

    请选择支付方式

    ×
    支付宝支付
    余额支付
    ×
    微信扫码支付 0 元