马上注册,免受广告困扰,轻松兑换eSIM!
您需要 登录 才可以下载或查看,没有账号?注册
×
简介
在 Discuz! X3.5 中,用户的登录状态默认使用 Session Cookie。这意味着,当用户关闭浏览器后,登录状态会失效。如果我们希望延长登录状态的有效期,例如保持 30 天,可以通过修改源码中的相关部分来实现。
本教程将详细讲解如何修改 Discuz! X3.5 的登录 Cookie 有效期。
步骤 1:找到 setloginstatus() 函数
首先,我们需要找到负责设置用户登录状态的函数 setloginstatus() 。
文件路径:
source/class/member/function_member.php
在这个文件中,setloginstatus() 函数用于设置用户的登录状态,包括相关的登录 Cookie(如 dz_auth )。
找到以下代码行:
setloginstatus($result['member'], $_GET['cookietime'] ? 2592000 : 0);
这段代码使用了一个三元运算符,根据用户是否选择了“记住我”选项来决定登录状态的有效期:
$_GET['cookietime'] ? 2592000 : 0 :
- 如果
$_GET['cookietime'] 存在且为真,则有效期为 2592000 秒(30 天)。
- 如果
$_GET['cookietime'] 不存在或为假,则有效期为 0(即 Session Cookie,浏览器关闭后失效)。
步骤 2:修改有效期
为了让登录状态的有效期固定为 30 天,无论用户是否选择“记住我”,我们可以修改上面的代码,将三元运算符替换为固定值:
修改前:
setloginstatus($result['member'], $_GET['cookietime'] ? 2592000 : 0);
修改后:
setloginstatus($result['member'], 2592000); // 固定设置为 30 天
通过这一修改,用户登录后的 Cookie 有效期将始终为 30 天。
步骤 3:保存并测试
- 保存修改:在
function_member.php 文件中保存上述修改。
- 清理缓存:清除浏览器中的 Cookie 和缓存。
- 重新登录:重新登录 Discuz! 论坛,并关闭浏览器,检查是否保持登录状态。
- 验证有效期:验证登录状态是否在 30 天内保持有效。
注意事项
- 在进行任何代码修改之前,务必备份你的文件,以便在出现问题时能够恢复。
- 这次修改针对登录状态的 Cookie 设置,不会影响其他 Cookies 的行为。
- 修改后,用户每次登录都会保持 30 天的有效期,而不再受“记住我”选项的影响。
结论
通过简单的代码修改,我们可以轻松将 Discuz! X3.5 中的登录 Cookie 有效期从默认的 Session 改为固定的 30 天。这不仅提升了用户体验,还避免了用户频繁重新登录的麻烦。
|