shetabit / visitor
Laravel 访客
v4.3.1
2024-05-06 05:32 UTC
Requires
- php: >=8.0
- illuminate/support: 9.*|10.*|11.*
- jaybizzle/crawler-detect: ^1.2
- mobiledetect/mobiledetectlib: ^4.8
- ua-parser/uap-php: ^3.9
Requires (Dev)
- orchestra/testbench: ^4.0
- phpunit/phpunit: >=7.5
- squizlabs/php_codesniffer: ^3.4
README
Laravel Visitor
这是一个 Laravel 包,用于提取和访问访客信息,如 browser、ip、device 等。
在此包中,您可以识别在线用户并确定用户是否在线。
安装
通过 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: 客户端 IPrequest: 整个请求输入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 特性的模型存储日志。
