加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP检查IPAddress是否是本地的

发布时间:2020-12-13 21:51:36 所属栏目:PHP教程 来源:网络整理
导读:我可以检查一下ip是否在私有网络中吗? ?phpfunction 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') ); // fals
我可以检查一下ip是否在私有网络中吗?

<?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不是私有IP吗?

UPDATE

解决方案我用过:

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

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

解决方法

根据 test run,我们可以看到PHP 5.2.0→5.3.5的输出是错误的,而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_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE ) );
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读