set_userdata('username') 这将保存 se-6ren">
gpt4 book ai didi

php - 如何使用 Codeigniter session 库创建 "remember me checkbox"?

转载 作者:IT王子 更新时间:2023-10-28 23:46:22 25 4
gpt4 key购买 nike

在 Codeigniter 中,我正在为我的网站构建一个身份验证系统,并使用 session 库实现这一点

     session->set_userdata('username')

这将保存 session - 我相信 - 一段时间

我想在登录表单中提供一个“记住我”复选框,以便用户可以永久保存 session - 找不到永久保存 session 的方法!?

注意:$sess_expiration 不会起作用,因为它为所有用户设置了到期日期,而我想做的是根据他的喜好设置到期日期

这可能吗?以及如何去做?

谢谢

最佳答案

如果选中记住我复选框,您将在用户系统上设置一个带有随机字符串的 cookie。例如:

$cookie = array(
'name' => 'remember_me_token',
'value' => 'Random string',
'expire' => '1209600', // Two weeks
'domain' => '.your_domain.com',
'path' => '/'
);

set_cookie($cookie);

您还将这个随机字符串保存在 users 表中,例如在 remember_me_token 列中。

现在,当用户(尚未登录)尝试访问需要身份验证的页面时:

  • 你检查他的系统上是否有名为 remember_me token 的 cookie
  • 如果存在,则检查数据库是否存在具有相同值的记录
  • 如果是这样,您重新创建该用户的 session (这意味着他们已登录)
  • 显示他们正在访问的页面

如果不满足上述要求之一,您将他们重定向到登录页面。

出于安全原因,您可能希望在每次用户登录时更新随机remember_me_token。您还可以在每次用户登录时更新cookie的到期日期。这样他就会留下来已登录。

为您编写所有代码会很费力,但我希望这能帮助您自己实现此功能。如果您有任何问题,请发表评论。祝你好运。

关于php - 如何使用 Codeigniter session 库创建 "remember me checkbox"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3984313/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com