PHP 检查 IPAddress 是否是本地的

标签 php networking ip

我可以检查一个 ip 是否在私有(private)网络中吗?

<?php
function isLocalIPAddress($IPAddress)
{
    return ( !filter_var($IPAddress, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE ) );
}

var_dump( isLocalIPAddress('127.0.0.1') ); // false
var_dump( isLocalIPAddress('192.168.1.20') ); // true
var_dump( isLocalIPAddress('64.233.160.0') ); // false

为什么 isLocalIPAddress('127.0.0.1') 给出的是 false 而不是 true

127.0.0.1不是私有(private)ip吗?


更新

我使用的解决方案:

<?php
function isLocalIPAddress($IPAddress)
{
    if( strpos($IPAddress, '127.0.') === 0 )
        return true;

    return ( !filter_var($IPAddress, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE ) );
}

最佳答案

根据 test run ,我们可以看到 PHP 5.2.0 → 5.3.5 的输出是 false,而 PHP 5.3.6 → 7.0.0beta1 和 hhvm-3.3.1 → 3.8.0 的输出是 是的

要解决您的问题,您可以检查 php 版本,如果它在第一个范围内,请添加:

function isLocalIPAddress($IPAddress)
{
    if($IPAddress == '127.0.0.1'){return true;} <-- add this
    return ( !filter_var($IPAddress, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE ) );
}

关于PHP 检查 IPAddress 是否是本地的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24043400/

相关文章:

python - 在开发多宿主可靠 udp 时,如何使用 mininet 检测链接是否已关闭?

javascript - IP 地址正则表达式简化

java - 如何让 Hadoop 服务器监听所有 IP

php - MySQL 到 MySQL 克隆与 PHP

php - Woocommerce REST API - 如果实时网站上的订单与其他网站上的产品不匹配,则跳过订单传输

php - MySQL 错误 : Unable to jump to row 0 on MySQL result index 8

networking - unix服务器之间TCP端口数据传输的限制

python - 如何处理python中的[WinError 10057]错误?

javascript - 检索客户端请求的 ip 地址

php - 有没有一种惯用的方法可以从 PHP 中的数组中获取可能未定义的键?