PHP 检查会话是否仍然有效

PHP check if session is still valid

我有一个 PHP 应用程序,它在用户浏览应用程序时使用会话来保留用户 information/permissions 等。我现在被要求配置系统以防止同一用户多次登录。我不能使用 cookie。

作为身份验证过程的一部分,我跟踪用户何时登录等,因此想到捕获用户 PHP 会话值(使用 session_id()),将其存储在数据库中,然后当用户选择注销(或因不活动而自动注销)时,使该字段无效。通过更新的登录过程,这应该是可能的。

我喜欢这种方法,它非常干净,但缺点是如果用户在没有完全注销的情况下关闭浏览器,则不会使 sessionID 无效。于是我开始思考:如果 sessionid 中的一个值,为什么不检查一下 PHP 是否认为它仍然有效?

现在从记忆中我似乎记得一个 PHP 函数,它会告诉我特定会话是否仍然有效。我认为这是 session_id() 但我不认为是这种情况,因为它获取或设置了当前会话。根据我的记忆,该函数将检查服务器的 session.save_path(/var/lib/php/sessions 使用 Ubuntu 和默认的 PHP.ini)以查看文件是否仍然有效*并相应地报告...但我似乎找不到那个功能。

这里有人可以帮助我吗?

*我很欣赏 PHP 的垃圾收集还有很多不足之处

是的,有这样的功能来检查会话状态它是活动的、禁用的还是不存在的

session_status()

这个函数 return 你的值是

  • PHP_SESSION_DISABLED 如果会话被禁用。
  • PHP_SESSION_NONE 如果会话已启用,但 none 存在。
  • PHP_SESSION_ACTIVE 如果会话已启用,并且存在一个。

有关此功能的更多详细信息Click Here