使用php会话来计算图像视图?

时间:2015-02-28 21:42:19

标签: php session cookies laravel-5

我想在我的网站上统计图片视图。到目前为止,我设置了一个包含最近20个已查看图像的Cookie,如1254.12.963.4328.32等。

如果有人按F5 /重新加载页面,这是为了防止多次计数。另外,我不想算爬虫和蜘蛛。 (我在某个地方看到机器人不会设置这个cookie,但我不知道)

当我使用会话ID并在会话中保存带有已查看图像ID的数组时,我是否只计算真实用户?我使用laravel与数据库会话驱动程序。每个会话可以存储多少数据?

3 个答案:

答案 0 :(得分:1)

您可能希望通过浏览器确定。请参阅此项目,该项目提供浏览器列表和文档如何捕获它。

BrowsCap

答案 1 :(得分:1)

这是一种自制的方式。当然,有些图书馆比这更好。但是,这是一个良好的开端。特别是,如果你想自己做。

<?php
if (!$_SESSION['counter'] || !isCrawler()) {
    $_SESSION['counter'] = 'whatever-counter';
}


function isCrawler() {
    $crawlers = array('googlebot'); //add more crawlers agents
    foreach ($crawlers as $crawler) {
        if (strstr(strtolower($_SERVER['HTTP_USER_AGENT']), strtolower($crawler))) {
            return true;
        }
    }
    return false;
}

答案 2 :(得分:1)

当我使用会话ID并在会话中保存带有已查看图片ID的数组时,我是否只计算真实用户? 不,我想如果你算上真正的用户,答案是没有问题的,因为你需要采取一些行动来验证它是真正的用户。这就是为什么 - 例如在提交表单时使用验证码。

但是,您可以缩小范围,以便检查"who's"浏览您的网页。你已经从 Lea Tano 得到了很好的答案,我认为这会给你一个暗示从哪里开始。

每个会话可以存储多少数据? 会话(默认情况下)存储到服务器,因此实际限制由PHP的memory_limit()和磁盘空间(在服务器上)确定。