使用 php 会话来计算图像浏览量?

use php session to count image views?

我想统计我网站上的图片浏览量。到目前为止,我设置了一个 cookie,其中包含最近查看的 20 张图像,例如 1254.12.963.4328.32 等等。

这是为了防止在有人按 F5 键/重新加载页面时重复计数。我也不想数爬虫和蜘蛛。 (我在某处读到机器人不会设置这个 cookie,但我不知道)

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

可能你想通过浏览器来判断。

查看此项目,其中提供了浏览器列表和如何捕获它的文档。

BrowsCap

这是一种自制的方法。当然,有一些图书馆做得比这更好。然而,这是一个好的开始。特别是,如果你想自己做。

<?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;
}

当我使用会话 ID 并在会话中保存一个包含已查看图像 ID 的数组时,我会只计算真实用户吗? 不。我想答案是不用质疑你是否会计算真实用户,因为你必须采取一些行动来验证它是真实用户。这就是为什么 - 例如在提交表单时使用验证码。

不过,您可以缩小范围,以便检查 "who's" 浏览您的页面。 Lea Tano 给了你一个很好的答案,我希望它能给你一个从哪里开始的提示。

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