php - 在 session 存储在默认 php session 存储中的情况下删除/管理用户 session 的方法?

标签 php

当 session 存储在默认的 php session 存储中时,是否有任何方法可以删除用户 session ?

例如,我是网站管理员,我想禁止登录用户。用户认证状态存储在 session 中。我正在从数据库中删除用户行,但用户仍处于登录状态,所有必要的身份验证信息也存储在 session 中。我需要删除/修改 session 。

可能的方式:

  • 在每次请求时从数据库中加载用户的行
  • 创建文件,说要删除用户的 session 并在每次请求时检查此文件是否存在
  • 在/dev/shm 中创建文件(检查非常快),但重新启动时文件将被删除
  • 在数据库中存储 session (我的项目的开销)
  • 在 nosql(redis、memcachedb)中存储 session (我的项目的开销)

除了将用户 session 存储在数据库或 nosql 数据存储中之外,还有什么优雅的方法吗?

最佳答案

我知道如何做到这一点的唯一方法是删除 session 记录。如果它是一个文件,删除 session 文件。如果 session 存储在数据库或内存缓存中,请将其删除。棘手的问题是如何找到 session ID,以及用户是否存在 session ID。

如果它是一个文件,并且您在其中存储了电子邮件或用户 ID,则可以查找该文件。数据库中的 session 存储应该易于查询。不确定如何在内存缓存中执行此操作。

如果你不在每个请求上重新生成 session ,你总是可以在创建 session 时将 session_id 设置为用户唯一的东西——如果你不使用 SSL 请小心,如果您使用的唯一 key 很容易被猜到(如 user_id)。然后,您可以在用户登录时将用户 session ID 与用户记录一起存储在数据库中。

关于php - 在 session 存储在默认 php session 存储中的情况下删除/管理用户 session 的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13423202/

相关文章:

php - 轻松修改 AJAX 脚本,将返回的输出分配到一个值中,而不是在文本框中打印

php - WordPress:$wpdb->get_results();第一次循环后返回错误结果

php mysql while循环查询优化

php - 如何将计算排名结果制作成表格?

php - ?action=register URL 上的 WordPress 垃圾邮件

php - laravel file_get_contents ('php://input')不工作

php - 如何使用 $_SERVER ['REQUEST_URI' ]

JavaScript 表单使用 Ajax 和 Laravel 路由提交到数据库

javascript - 使用 Ajax 传递参数(使用延迟和 promise )需要帮助

PHP - 从下拉框中获取选择以在同一页面上的另一个下拉框中使用