微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 ip2long 将 IPv6 转换为 long,就像我们为 IPv4 所做的那样?

如何解决如何使用 ip2long 将 IPv6 转换为 long,就像我们为 IPv4 所做的那样?

我有某个国家/地区的 IP 数据库。我已经付费版本的 Ip2Lcoation 并且我获得了所有 IPv6 范围和 IPv4。在我的网络应用程序中,我使用 ip2long 函数将所有 IP 转换为 long。

它与 IPv4 完美配合,但与 IPv6 一起失败?我搜索并发现了几个不起作用的功能。我的代码如下

if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
        $ip = $_SERVER['HTTP_CLIENT_IP'];
    } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    } else {
        $ip = $_SERVER['REMOTE_ADDR'];
    }
    
    
    $long = ip2long($ip);// fails at IPv6
    //MysqL query to check the ip ranges
    $cri= new CDbCriteria();
    $cri->condition="$long>=ip_range_start AND $long<=ip_range_end";
    if (UsaIps::model()->exists($cri))
    {
       return true;
    }
    else
    {
        return false;
    }

我怎样才能做到这一点??

任何指南有帮助吗??

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。