之前,本站基于纯真IP库实现评论者IP归属地,用的好好的,突然官方又改变策略了,推出czdb数据格式,并在10月1日开始停止dat格式和exe格式的发布(详情见官方公众号)。
新版本的要求就多了,首先你得在官方注册登录,其次根据它的要求帮它宣传(我是在本博客底部加上他们网站的链接),并截图给他审核,通过之后你才会有授权,你才能得到key。有了这个key你才能使用czdb格式数据库。我个人是不太喜欢需要通过这种方式才能得到的一些东西,吃相有点难看了。但是没办法,好像也找不到更好的选择了。
CZDB目前官方已支持JAVA、C语言和PHP解析程序,我们直接拿来用就可以了。下面主要说说咱们WordPress的食用方法,也就是PHP的解析程序。
PHP解析程序的GitHub地址:czdb_searcher_php
在项目目录下运行以下命令来安装 CZDB Searcher:
composer require czdb/searcher
如果找不到包,可能是因为你没有使用composer 2.x版本,可以使用以下命令来安装composer 2.x版本:
composer self-update --2
然后将下面代码扔进functions.php文件里:
//解析纯真IP获取评论者ip归属地 开始
require_once __DIR__ . '/vendor/autoload.php';
use Czdb\DbSearcher;
//评论作者归属地函数
//Code by HJYL.ORG
//IP数据库由纯真CZ88提供
function getCity($ip){
$dbSearcher = new DbSearcher("cz88_public_v4.czdb的路径", "BTREE", "key");
// get_template_directory() . "/czdb/cz88_public_v4.czdb" 这是某主题目录下的文件夹
// 默认BTREE,搜索模式(例如,"BTREE" 少量查询 或者 "MEMORY" 大量查询)。
// key,即密钥,从https://cz88.net/geo-public获取
$region = $dbSearcher->search($ip);
// 将字符串拆分成各个部分
if(strpos($region, "\t")){
$region = preg_replace('/\t+/','–',$region);
}elseif(strpos($region, " ")){
$region = str_replace(' ','–',$region);
}
$region = explode("–", $region);
//分别获取国家、省、市字段
$country = $region[0] ?? "";
$province = $region[1] ?? "";
$city = $region[2] ?? "";
$dbSearcher->close();
//优先显示城市,其次省,最后国家
if($ip == '127.0.0.1'){
$data = '小黑屋';
}elseif($city == "" || false !== strpos($city, '移动') || false !== strpos($city, '电信') || false !== strpos($city, '联通')){
$data = $province;
}elseif($province == "" || false !== strpos($province, '移动') || false !== strpos($province, '电信') || false !== strpos($province, '联通')){
$data = $country;
}else{
$data = $city;
}
return $data;
}
//解析纯真IP获取评论者ip归属地 结束
调用方法:
echo getCity(get_comment_author_IP());
结束撒花~~~
花絮:
这个版本的数据库支持IPv4和IPv6,其实之前的那个itbdw/ip-database也是支持IPv4和IPv6的,只是纯真没有IPv6数据库。这次发布了IPv6数据库,但是我也用不上。
这段代码的解析思路是这样的:根据IP查询数据库,得到的格式是这样的——“中国–安徽–合肥 移动”,然后将其拆解,分别得到国家、省、市。别看这格式很简单,我测试了很久,才发现移动前的空格不仅有空格,还有制表符“\t”,这是目前我遇到的,不知道还有没有其他看不见的符号了。
最让人吐槽的是纯真社区版IP库在地级市的准确率上不是很高。所以不必较真,仅供娱乐而已。
本文链接: WordPress接入纯真IP库CZDB版本
老早之前论坛经常有类似这个代码,把你用的各个设备id ip 都展现出来。估计也类似手机号码归属地数据库。
3个月前 · 青岛 · Google Chrome 123 Windows 10
@万有引力 嗯嗯,这玩意儿就是这样,显示IP归属地的。
3个月前 · 合肥 · Microsoft Edge 128 Windows 10
现在我用的都不真了,有时候不准,但是不管了哈,大致能看到大家所在区域就行,实在不想折腾这玩意,感觉意义不大了
3个月前 · 丽江 · Firefox 129 Windows 10
@XIGE 呵呵,你假装它是准的……
3个月前 · 合肥 · Microsoft Edge 128 Windows 10
纯真的数据库也得关注公众号才能下载,不过 github 上倒是有能下载的地方。
3个月前 · 青岛 · Google Chrome 126 Mac OS X 10.15
@obaby 现在公众号上都不显示下载地址了,得在他们网站上登录进去才能看到。
3个月前 · 合肥 · Microsoft Edge 128 Windows 10
反正就是变了法的想收费了。
3个月前 · 漯河 · Microsoft Edge 127 Windows 10
@网友小宋 你说的没错!人家就是想搞你钱。可我就只白嫖。哈哈。
3个月前 · 合肥 · Firefox 129 Windows 10
高级,不过我好像用不上。。
3个月前 · 嘉兴 · Google Chrome 122 Windows 10
@织梦岁月 呵呵,是的,这玩意儿纯属娱乐。
3个月前 · 合肥 · Wordpress App 25 iPhone iOS 17.6
唉,有些东西用着用着就开始吃相难看了,我之前足迹用的GD地图api,后面官方也是不停变换规则进行各种限制,忍着用了一段时间最后找到替代的毫不犹豫就换了。。。
2个月前 · 东莞 · Safari 17 Mac OS X 10.15
@Lvtu 现在的产品最终都是一个目的,为了搞钱!
2个月前 · 六安 · Wordpress App 25 iPad iOS 18.0