问题描述
我有某个国家/地区的 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 (将#修改为@)