shetabit/visitor

Laravel 访客

v4.3.1 2024-05-06 05:32 UTC

This package is auto-updated.

Last update: 2024-09-06 06:10:15 UTC


README

Laravel Visitor

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

在此包中,您可以识别在线用户并确定用户是否在线。

安装

通过 composer

composer require shetabit/visitor

配置

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

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

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

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

php artisan vendor:publish

php artisan migrate

如何使用

您可以在控制器中使用 $request->visitor() 访问访客信息,并且您可以在任何地方使用 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

存储日志

您可以使用以下方式创建日志:

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

在您的模型中使用 Shetabit\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 类中使用 Shetabit\Visitor\Traits\Visitor,然后您可以运行以下代码:

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

检索和确定在线用户

首先在您的 User 类中使用 Shetabit\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 中间件自动存储访客日志。

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

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

星标历史

Star History Chart