Laravel 5.2的访客跟踪和点击计数

时间:2016-07-21 08:58:02

标签: laravel statistics laravel-5.2

我花了几个小时搜索访客跟踪器并点击laravel 5.2的计数器使用情况。但我没有找到最好的。如果你知道,请指出我

1 个答案:

答案 0 :(得分:1)

访客跟踪

我会直接在相应控制器的数据库中记录访问。这是跟踪页面查看最简单方便的方法。它将唯一的访问者会话ID和当前页面保存到数据库。这是一个例子:

class PageController extends Controller
{
    public function index()
    {
        \DB::table('visitors')->create([
            'visitor' => session()->getId(),
            'page' => 'index',
        ]);
        return view('pages.index');
    }
}

点击跟踪/计数器

我会使用Javascript和接收数据的API端点,但这有点复杂。

  

我没有测试过这段代码,但应该以这种方式工作。如果它无法正常工作,请添加评论。

HTML中的实际链接

该链接需要onclick属性。用JS监听链接点击只对我不起作用,也许点击和事件处理之间的延迟太大而无法调用该函数。

<a href="some-url-here" onclick="trackClick(this)">

<强>的Javascript

当用户单击上述链接并通过POST将数据推送到应用程序的API端点时,将调用函数trackClick。不要忘记将csrf_token替换为您的应用程序的实际令牌。

function trackClick(link) {
  $.post({
    url: '/api/track-click',
    data: {
      '_token': csrf_token,
      'link_target':$(link).attr('src')
    }
  });
}

<强>路线

这将是您的控制器的相应路线:

Route::post('api/track-click', 'ApiController@addClick');

API控制器

控制器获取POST数据,只是将链接目标保存到数据库中。您可以扩展此功能以检查目标是内部还是外部。这只是现在的起点。

class ApiController extends Controller
{
    public function addClick(Request $request)
    {
        $click = \DB::table('clicks')->where([
            'visitor' => session()->getId(),
            'link' => $request->get('link_target'),
        ])->first();

        if ($click) {
            $click->increment('count');
        } else {
            \DB::table('clicks')->create(array(
                'visitor' => session()->getId(),
                'link' => $request->get('link_target'),
                'count' => 0
            ));
        }
    }
}