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
特性的模型存储日志。