You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现每日更新Cookie值以追踪用户每周连续访问天数?

实现Cookie追踪每周连续每日访问次数

需求说明

需要通过Cookie记录用户每周内的连续每日访问次数:首次访问值为1,次日连续访问则累加为2,以此类推;若中断访问则重置为1,每周日之后Cookie自动过期重置。

修改后的实现代码

(function() {
    const cookieName = "WeeklyAccess";
    // 工具函数:根据名称获取Cookie值
    function getCookie(name) {
        const value = `; ${document.cookie}`;
        const parts = value.split(`; ${name}=`);
        if (parts.length === 2) return parts.pop().split(';').shift();
    }

    // 格式化当日日期(仅保留年月日,消除时分秒干扰)
    const today = new Date();
    today.setHours(0, 0, 0, 0);
    const todayStr = today.toISOString().split('T')[0];

    // 读取并解析现有Cookie数据
    const cookieData = getCookie(cookieName);
    let visitCount = 1;
    let lastVisitDate = todayStr;

    if (cookieData) {
        try {
            const parsedData = JSON.parse(cookieData);
            const lastVisit = new Date(parsedData.lastVisit);
            lastVisit.setHours(0, 0, 0, 0);
            // 计算两次访问的天数间隔
            const dayGap = (today - lastVisit) / (1000 * 60 * 60 * 24);

            if (dayGap === 1) {
                // 连续访问,次数累加
                visitCount = parsedData.count + 1;
            } else if (dayGap > 1) {
                // 访问中断,重置次数
                visitCount = 1;
            }
            lastVisitDate = todayStr;
        } catch (e) {
            // Cookie格式异常,强制重置为初始值
            visitCount = 1;
        }
    }

    // 保留原逻辑:设置Cookie到期时间为下周六
    const nextSaturday = new Date();
    nextSaturday.setDate(nextSaturday.getDate() + (7 + 7 - nextSaturday.getDay()) % 7);

    // 以JSON格式存储访问次数和日期到Cookie
    const newCookieValue = JSON.stringify({ count: visitCount, lastVisit: todayStr });
    document.cookie = `${cookieName}=${newCookieValue}; SameSite=None; Secure; expires=${nextSaturday.toUTCString()}; path=/; domain=.${location.hostname.replace(/^www\./i, "")}`;
})();

关键逻辑说明

  • Cookie存储优化:改用JSON对象同时存储访问次数和上次访问日期,解决单一数字无法判断连续性的问题
  • 连续访问判断:通过计算两次访问的日期间隔,精准识别是否为连续次日访问,对应执行累加或重置操作
  • 异常兼容:增加格式异常处理,避免Cookie损坏导致的功能失效
  • 周重置逻辑保留:维持原有的下周六到期设置,确保每周自动重置统计周期

内容的提问来源于stack exchange,提问作者Ac fresh 21

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 12:25:35