写在开始

本插件持续开发中,目前版本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
  • 上线GitHub仓库
V1.2.0 2024-08-11
  • 修复访问统计中选择今日、昨日、本周、本月里时区错误的问题
  • 优化的条形图的显示逻辑,如果数据数量过多,则会显示滑动条 [数据数量*50px > 容器宽度,图表的宽度为数据数量*50px,会出现滑动条;反之图表的宽度为容器宽度的100%]
V1.2.1 2024-09-05
  • 增加查询IP访问记录的功能,支持模糊查询
V1.2.2 2024-09-23
  • 修复了手机端进入页面无法点击菜单的Bug;修复了XQLocation的配置信息没有找到的Bug
V1.2.3 2024-09-28
  • 修复了ipv6访问记录出错的BUG
V1.2.4 2024-09-29
  • 修复了创建数据库错误,同时修复了ipv6记录时出现Unknown的错误
V1.2.5 2024-10-03
  • 排除蜘蛛IP的访问记录,专注于记录您的真正访客,同时将面板入口从“管理”移动至“控制台”
下个版本 待定
  • 优化查询逻辑,正在讨论是否单独记录蜘蛛IP
* 上线Github前的版本不记录在内
更新说明(*上线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. 可以根据地址模糊查记录吗?

  未支持,预计下一个版本实现

写在最后

  本插件不定时更新,欢迎在评论区留言,对我提出意见与建议!
(2024-09-28)最近看了一些评论,都是建设性意见的,非常感谢,有问题的话积极提出来,我会修复,感激。

最后修改:2024 年 10 月 03 日
如果觉得我的文章对你有用,请随意赞赏