abhij89/utm-referer

一个简单的包,用于获取新用户的来源链接和UTM参数

安装: 5

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 0

开放问题: 0

类型:项目

1.0.0 2020-12-23 09:39 UTC

This package is auto-updated.

Last update: 2024-09-23 20:24:09 UTC


README

Software License Code Style Status

记住访问者的原始来源链接,在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)。有关更多信息,请参阅许可证文件