【问题标题】:Php Manage multiple session per user in databasePhp管理数据库中每个用户的多个会话
【发布时间】:2016-02-18 20:37:51
【问题描述】:

我正在制作一个登录系统。我在数据库中创建了 active_session 表,如下所示:

| id | user_id |session_key|others...|
| 12 |  6548   |kdjgs939493|.........|

我创建了一个生命周期有限(如 1 小时或一天等)的 cookie。当我手动注销时,它会破坏 cookie 并从数据库中删除会话记录。问题是,如果有人登录并且没有注销,cookie 将在时间到期后过期,但我如何从数据库中删除此类会话。因为如果不删除这些记录,那么数据库中会有很多无用的会话记录

【问题讨论】:

  • session_start(); session_unset(); session_destroy();
  • 我知道这些,但这些不会自动从数据库中删除记录

标签: php mysql session cookies


【解决方案1】:

您必须存储一个时间戳,无论是会话开始的时间还是应该结束的时间。然后您可以运行计划任务并删除所有不再需要的条目。

【讨论】:

    【解决方案2】:

    解决方案 1:您可以在执行登录的同一脚本中添加删除旧条目的命令。这样,您就可以确保每次登录后不会有旧记录。

    解决方案 2:您可以制作一个定期执行的脚本,以检查数据库中的旧记录并删除它们。这样,您可以为该脚本使用具有删除记录权限的特定 mysql 用户。

    【讨论】:

    • 两者都是正确的,我在会话表中添加了 expirydate 列,其默认值为当前时间+(会话到期时间或其他),并将此查询包含在登录脚本中:$deloldsession = $con->query("DELETE FROM active_sessions where expirytime < NOW()");
    猜你喜欢
    • 2016-01-03
    • 2011-08-29
    • 1970-01-01
    • 2021-02-24
    • 1970-01-01
    • 2013-03-13
    • 1970-01-01
    • 2016-03-23
    • 2014-03-30
    相关资源
    最近更新 更多