请注意,本文编写于 193 天前,最后修改于 110 天前,其中某些信息可能已经过时。
写在开始
本插件持续开发中,目前版本V1.2.5,插件在Github开源,开发不易,帮忙在Github点个Star呗,顺便在博客点个赞吧~
最近突发奇想,想看看哪些地区的同志更喜欢访问我的博客,同时也想看看博客的哪些内容最值得大家关注。基于上述的想法,也找过一些Typecho插件,最经典的当属Access了,但是Access年久失修,听说性能也不咋好,捣鼓了半天心想不如自己开发一套访问日志插件,由此便着手写了自己的VisitorLogger插件(本人第一次接触php,平时都是Vue+Spring,插件写的可能比较烂,有问题请批评指正)。
VisitorLogger
VisitorLogger首先能够记录每一个访客的IP、访问路由、以及访问时间,同时会自动查询访客所在的地理位置;其次VisitorLogger能够快速统计自定义时间段内的访问情况,包括各个国家的访问统计,各个省份的访问统计以及各个路由的访问情况,更多的功能持续开发中。VisitorLogger为了避免卡顿或者获取失败,查询访客地理位置时依赖于本地集成数据库,不调用任何第三方API接口。同时提供了灵活的自定义时间段统计功能,轻松查看历史访问记录。
使用VisitorLogger的前提条件:
- 你得是基于Typecho的博客
- Typecho版本 >= 1.2.1 (低版本未测试)
- PHP版本 >= 7.2
- MySQL 5.x(8.0版本需要修改代码,后面会讲)
开发不易,动动你的小手点个赞,点个star!插件本地下载地址:
Github:
此处内容需要评论回复后(审核通过)方可阅读。
本站下载:
此处内容需要评论回复后(审核通过)方可阅读。
插件使用方法:
- 下载后将压缩包解压到 /usr/plugins 目录
- 文件夹名改为VisitorLogger
- 登录管理后台,激活插件即可食用
更新记录
版本号 | 更新时间 | 更新说明 |
---|---|---|
V1.1.2 | 2024-08-10 |
|
V1.2.0 | 2024-08-11 |
|
V1.2.1 | 2024-09-05 |
|
V1.2.2 | 2024-09-23 |
|
V1.2.3 | 2024-09-28 |
|
V1.2.4 | 2024-09-29 |
|
V1.2.5 | 2024-10-03 |
|
下个版本 | 待定 |
|
* 上线Github前的版本不记录在内 |
常见问题
1. 激活插件时提示插件XQLocation的配置信息没有找到
已修复,请更新至最新版本
2. 支不支持IPV6
已支持,请更新至最新版本
3. 激活插件时提示数据库创建失败
激活插件时提示以下信息,这是由于MySQL版本不兼容导致:
SQLSTATE[HY000]: General error: 1 near "UNSIGNED": syntax error
SQLSTATE[HY000]: General error: 1 near "AUTO_INCREMENT": syntax error
SQLSTATE[HY000]: General error: 1 near "ENGINE": syntax error
您可以切换至MySQL 5.x版本,或者将:
$sql = "CREATE TABLE IF NOT EXISTS `{$prefix}visitor_log` (
`id` INT(10) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
`ip` VARCHAR(45) NOT NULL,
`route` VARCHAR(255) NOT NULL,
`country` VARCHAR(100),
`region` VARCHAR(100),
`city` VARCHAR(100),
`time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8;";
替换为:
$sql = "CREATE TABLE IF NOT EXISTS `{$prefix}visitor_log` (
`id` INT(10) PRIMARY KEY,
`ip` VARCHAR(45) NOT NULL,
`route` VARCHAR(255) NOT NULL,
`country` VARCHAR(100),
`region` VARCHAR(100),
`city` VARCHAR(100),
`time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);";
4. 排除了蜘蛛IP吗?
已支持,请更新至最新版本
5. 使用CDN后不显示真实IP怎么办
请在工程的根目录下的config.inc.php文件的末尾添加以下代码:
/** 使用CDN后获取访客真实ip **/
if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$list = explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']);
$_SERVER['REMOTE_ADDR'] = $list[0];
}
6. 可以根据地址模糊查记录吗?
未支持,预计下一个版本实现
写在最后
本插件不定时更新,欢迎在评论区留言,对我提出意见与建议!
(2024-09-28)最近看了一些评论,都是建设性意见的,非常感谢,有问题的话积极提出来,我会修复,感激。
(2024-11-01)感谢大家提出的意见与建议,最近忙于学业,会抓紧时间修改与实现。
138 条评论
不需要单独建表保存蜘蛛
是的,加一个字段就行了
感谢感谢,我也看看
让我看看
博主可不可以分享下最下面的时间流逝怎么做的?handsome自带的吗
能搜到的,bing搜一搜handsome美化,时间流逝
嗯…你这个插件有一定的缺陷,比如我最近测试了一下,数据中心ip不会被排除,还有类似//cms/wp-includes/wlwmanifest.xml的明显不是真人的也不会排除,这个有办法修复么?
已知的蜘蛛IP排除已经做了,因为有些IP无法分辩是不是蜘蛛,所以如果是很明显的蜘蛛,比如数据中心此类,还是可以通过匹配字段去排除,但是总还会有一些没考虑到的情况排除不了的
是的,我自己加了一个wp格式的uri全部排除
感谢大神分享,可以在PHPBB里用的吧?
不知道欸,这是给Typecho写的
PHP Warning: Constant TYPECHO_ADMIN already defined in D:\www\xx\wwwroot\admin\common.php on line 6
启用以后打开插件显示警告,无法正常使用。
看看评论区其他人,有一样的 有解决方案
把6行的代码改成了if (!defined('TYPECHO_ADMIN')) {
define('TYPECHO_ADMIN', true);
}
不出现错误了,但是出现无法访问的提示Access denied.
Access denied估计是数据库的原因,要看看数据是否有权限访问
谢谢你的回复,同时也谢谢你开发这么好的插件。只是我买的是虚拟主机,设置数据库读写权限以后还是不能正常使用。看来是无缘了。
不客气,如果还需要后续帮助,请随时留言
PHP Warning: Constant TYPECHO_ADMIN already defined in D:\www\xx\wwwroot\admin\common.php on line 6
启用以后打开插件显示警告,无法正常使用。
试试插件效果。
试试看,试试看