torgodly/visitor

Laravel 访客

v1.0 2023-04-24 23:37 UTC

This package is auto-updated.

Last update: 2024-09-25 03:35:51 UTC


README

Laravel Visitor

这是一个用于提取和访问访客信息的 Laravel 扩展包,例如 browseripdevice 等。

在这个扩展包中,您可以识别在线用户并确定用户是否在线。

安装

通过 composer

composer require torgodly/visitor

配置

如果您使用的是 Laravel 5.5 或更高版本,则无需添加提供者和别名。

# In your providers array.
'providers' => [
    ...
    torgodly\Visitor\Provider\VisitorServiceProvider::class,
],

# In your aliases array.
'aliases' => [
    ...
    'Visitor' => torgodly\Visitor\Facade\Visitor::class,
],

然后,运行以下命令以发布迁移并创建表

php artisan vendor:publish

php artisan migrate

使用方法

您可以在控制器中使用 $request->visitor() 访问 visitor's information,并且您可以在任何地方使用 visitor() 助手函数访问访客信息。

我们有以下方法来检索访客信息

  • device : 设备名称
  • platform : 平台名称
  • browser : 浏览器名称
  • languages : 语言名称
  • ip : 客户端 IP
  • request : 整个请求输入
  • useragent : 整个用户代理
  • isOnline : 确定当前(或指定)用户是否在线
$request->visitor()->browser(); // firefox
$request->visitor()->visit($post); // create log for post
$request->visitor()->setVisitor($user)->visit($post); // create a log which says $user has visited $post

存储日志

您可以使用以下 visit 方法创建日志

visitor()->visit(); // create a visit log

在您的模型中使用 torgodly\Visitor\Traits\Visitable 特性,然后您可以像下面这样为模型保存访问日志

// or you can save log like the below
visitor()->visit($model);
// or like the below
$model->createVisitLog();

// you can say which user has visited the given $model
$model->createVisitLog($user);
// or like the below
visitor()->setVisitor($user)->visit($model);

可以使用 visits 关系加载模型视图。

您可以像下面这样统计模型访问次数

$model->visitLogs()->count();

可以通过 IP 和模型统计唯一用户。

// by ip
$model->visitLogs()->distinct('ip')->count('ip');

// by user's model
$model->visitLogs()->visitor()->count();

在您的 User 类中使用 torgodly\Visitor\Traits\Visitor,然后您可以运行以下代码

$user->visit(); // create a visit log
$user->visit($model); // create a log which says, $user has visited $model

检索和确定在线用户

首先在您的 User 类中使用 torgodly\Visitor\Traits\Visitor

然后您可以检索 User 类的实例在线用户并确定用户是否在线。

visitor()->onlineVisitors(User::class); // returns collection of online users
User::online()->get(); // another way

visitor()->isOnline($user); // determines if the given user is online
$user->isOnline(); // another way

自动记录

您的应用程序可以使用 LogVisits 中间件自动存储访客日志。

如果您想自动保存日志,请添加 torgodly\Visitor\Middlewares\LogVisits 中间件。

该中间件将为绑定在路由(路由模型绑定)并使用 torgodly\Visitor\Traits\Visitable 特性的模型存储日志。