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

PHP实现用户每日限取1条视频(100天有效期)功能技术求助

解决PHP中用户视频每日获取限制与权限有效期问题

嘿,我来帮你搞定这个需求!你要实现的是用户从视频库每日仅能获取1条视频,且权限有效期为加入日期起100天,用strtotime()完全可以实现,我给你拆解成两个核心部分来做:

一、先处理权限有效期判断

首先得确认用户的权限是否还在100天有效期内。我们可以利用strtotime()直接计算出用户加入日期后100天的时间戳,再和当前时间戳对比就行:

  • 假设数据库里存的用户加入日期是Y-m-d格式(比如2024-01-01)
  • 用strtotime($joinDate . ' +100 days')就能算出到期的时间戳
  • 把这个到期时间戳和当前时间time()对比,如果当前时间已经超过,就说明权限过期了

二、再处理每日获取限制

这部分需要记录用户最后一次获取视频的日期,判断今天和这个日期是否相同:

  • 数据库里新增一个字段(比如last_video_date),用来存用户最后拿视频的日期,初始值可以设为null或空字符串
  • 把今天的日期格式化为Y-m-d(和数据库存的格式统一),和用户的last_video_date对比,如果相同,就说明今天已经拿过了

完整代码示例

下面是整合后的PHP代码,你可以根据自己的数据库操作方式调整:

// 模拟从数据库获取用户数据(实际项目中替换为你的查询逻辑)
$userId = 1;
$joinDate = '2024-01-15'; // 用户加入日期,格式Y-m-d
$lastVideoDate = '2024-04-23'; // 用户最后获取视频的日期,初始可为null

// 1. 检查权限是否过期
$expireTime = strtotime($joinDate . ' +100 days');
$currentTime = time();

if ($currentTime > $expireTime) {
    echo "抱歉,你的视频获取权限已过期(有效期为加入之日起100天)";
    exit;
}

// 2. 检查今日是否已获取过视频
$today = date('Y-m-d');
if ($lastVideoDate === $today) {
    echo "今日已获取过1条视频,请明天再来哦";
    exit;
}

// 3. 允许获取视频,同时更新最后获取日期到数据库
// 这里以PDO为例,替换为你实际的数据库操作
// $pdo = new PDO('mysql:host=localhost;dbname=your_db', 'user', 'pass');
// $stmt = $pdo->prepare("UPDATE users SET last_video_date = ? WHERE id = ?");
// $stmt->execute([$today, $userId]);

echo "成功获取视频!";

关键细节说明

  • strtotime()的灵活性:它能自动处理日期的进位(比如跨月、跨年),不用你手动计算天数,非常省心
  • 日期格式统一:一定要用Y-m-d这种标准格式来存储和对比,避免因为时间部分(比如时分秒)导致的判断错误
  • 边界情况:如果用户当天第一次获取视频,last_video_date为空或null,这时候判断条件会不成立,就能正常允许获取

内容的提问来源于stack exchange,提问作者Komal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:18:30