海洋 CMS 会员观看有效期如何配置
结论:海洋CMS 没有单独的「会员观看有效期」总开关,它由两处共同决定——会员组里的播放权限(决定"能不能看")和会员账号上的到期时间(决定"能看多久")。只配其中一处,结果要么是所有注册用户都能看,要么是到期时间写了却没人被拦。
海洋CMS 的会员观看有效期由哪两部分决定?
结论:权限管"能不能看",到期时间管"能看多久",两个都配好才生效。
第一处是会员组(gid,会员所属的权限分组)里的播放权限。第二处是会员账号上的到期时间:程序在输出播放地址前拿当前时间和它比一次。所谓"配置有效期",实际动作就是"建一个付费会员组,再给这个组里的账号写到期时间"。搞混这两件事,就会出现"我明明设了期限,用户还是能看"或"用户刚注册就没权限"。
第一步:付费会员组的播放权限怎么配?
结论:先让"能看"这件事成立,再谈"看多久"。
- 进后台会员组管理,新建一个组,比如"包年会员",记下它的组 ID(gid)。
- 在这个组的权限项里打开观看/播放权限,需要试看的话把试看时长填成具体数字(例如 6 分钟)。
- 用测试账号把 gid 切到这个组,前台打开一集确认能播。
这一步不通过,问题在权限或缓存,不在有效期,别急着改数据库。
单个会员的到期时间在哪里改?
结论:到期时间存在会员表的字段里,改它才是真正改有效期。
- 先备份:
mysqldump -u root -p 你的库名 > sea_backup.sql。 - 用 phpMyAdmin 执行
DESC sea_member;(表前缀按你安装时填的来),找到存到期时间的那个字段。 - 后台会员管理里可以逐个编辑会员期限,菜单名各版本有出入,按"期限/到期"关键字找;批量修改再用 SQL 更新。
- 必须确认一件事:该字段为 0 或 NULL 时,你的程序判它是"永久有效"还是"已过期"。这决定了新注册用户默认是永久还是立刻失效,新站翻车基本都在这里。
怎么让会员到期后自动失效?
结论:失效不靠定时任务删权限,而是每次请求时比对当前时间和到期时间。
播放页或播放接口在给出地址前做一次判断:当前时间戳大于到期时间,就不输出播放地址,跳转充值页。三个注意点:一是模板缓存,开启缓存后页面不会自动刷新,改完配置要清缓存;二是播放地址如果明文暴露,用户拿到 m3u8 后到期也拦不住,需要在播放接口做二次校验;三是会员中心显示的"剩余天数"要和播放页用同一份时间戳,避免前台说还能看、后台说已过期。
续费时有效期怎么叠加?
结论:续费必须在原到期时间上累加,不能从当天重新算,否则老会员会越续越短。
逻辑写成:原到期时间大于当前时间 → 新到期时间 = 原到期时间 + 购买时长;否则新到期时间 = 当前时间 + 购买时长。支付回调里先读一次原值再计算写入,避免重复回调把时长叠加两次。时长统一用秒存储最省事,30 天就是 2592000 秒。
到期不生效或提前失效,先查这 4 个点
- 时间戳单位不一致:一边写秒,一边按毫秒比较。
- 时区没统一:
php.ini里date.timezone设为Asia/Shanghai,数据库和 PHP 用同一个时区。 - 缓存没清:模板缓存、播放接口缓存都会让你以为配置没生效。
- 0/NULL 的判断规则和你的预期相反。
把会员组权限、到期时间字段、比对逻辑这三处对齐,海洋CMS 的会员有效期就算配完了。真正容易出错的不是"在哪设置",而是续费叠加规则和 0 值语义这两处细节。
原文链接:https://www.gj0.com/thread-1069.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。