abhij89 / utm-referer
一个简单的包,用于获取新用户的来源链接和UTM参数
This package is auto-updated.
Last update: 2024-09-23 20:24:09 UTC
README
记住访问者的原始来源链接,在cookie中存储utm标签。
安装
您可以通过composer安装此包
composer require abhij89/utm-referer
该包将在Laravel 5.5中自动注册自身。在Laravel 5.4中,您需要手动在config/app.php
中注册Abhij89\UTMReferer\UTMRefererServiceProvider
服务提供者。
您可以使用以下命令发布配置文件
php artisan vendor:publish --provider="Abhij89\UTMReferer\UTMRefererServiceProvider"
如果您想更改存储在cookie中来源链接/utms的键,或者想禁用来源链接/utms,则需要发布配置文件。
return [ /* * The key that will be used to remember the referer in the cookie. */ 'referer_cookie_key' => 'user-referer', /* * The key that will be used to remember the utm tags in the cookie. */ 'utm_cookie_key' => 'user-utms', /* * The sources used to determine the referer/utms. */ 'sources' => [ Abhij89\UTMReferer\Sources\UTMSource::class, Abhij89\UTMReferer\Sources\RequestHeader::class, ], ];
使用方法
要捕获来源链接,您只需要将Abhij89\UTMReferer\CaptureReferer
中间件添加到您的中间件堆栈中。在大多数配置中,您可能只想在“web”请求中捕获来源链接,因此将其注册在web
堆栈中是有意义的。确保它位于Laravel的StartSession
中间件之后!
// app/Http/Kernel.php protected $middlewareGroups = [ 'web' => [ // ... \Illuminate\Session\Middleware\StartSession::class, // ... \Abhij89\UTMReferer\CaptureReferer::class, // ... ], // ... ];
检索来源链接的最简单方法是从容器中解析出来
use Abhij89\UTMReferer\UTMReferer; $referer = app(UTMReferer::class)->get(); // 'google.com'
或者,您可以选择使用Laravel的自动门面
use Facades\Abhij89\UTMReferer\UTMReferer; $referer = UTMReferer::get(); // 'google.com'
空的来源链接永远不会覆盖现有的来源链接。因此,如果一个访客从google.com来到您的网站上,并浏览了几个页面,那些页面不会影响来源链接,因为本地主机被忽略。
忘记或手动设置来源链接
Referer
类提供专门的忘记或手动设置来源链接的方法。
use Referer; Referer::put('google.com'); Referer::get(); // 'google.com' Referer::forget(); Referer::get(); // ''
更改确定来源链接的方式
来源链接是通过在配置中定义的各种来源上执行检查来确定的。
return [ // ... 'sources' => [ Abhij89\Referer\Sources\UtmSource::class, Abhij89\Referer\Sources\RequestHeader::class, ], ];
一个来源实现Source
接口,需要实现一个方法,即getReferer
。如果一个来源能够确定来源链接,其他来源将被忽略。换句话说,sources
数组是按优先级排序的。
在下一个示例中,我们将添加一个可以使用?ref
查询参数来确定来源链接的来源。此外,我们还将忽略?utm_source
参数。
首先,创建来源实现
namespace App\Referer; use Illuminate\Http\Request; use Abhij89\Referer\Source; class RefParameter implements Source { public function getReferer(Request $request): string { return $request->get('ref', ''); } }
然后,在sources
数组中注册您的来源。同时,我们还将禁用utm_source
。
return [ // ... 'sources' => [ App\Referer\RefParameter::class, Abhij89\Referer\Sources\RequestHeader::class, ], ];
就是这样!来源实现可以这么简单,如果需要也可以更复杂。
更新日志
有关最近更改的更多信息,请参阅更新日志。
测试
composer test
贡献
有关详细信息,请参阅贡献指南。
安全
如果您发现任何安全相关的问题,请通过电子邮件freek@spatie.be联系,而不是使用问题跟踪器。
致谢
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。