如何取消特定用户的会话?

2024-01-03

我有一个这样的会议$_SESSION['login']当它等于1,这意味着使用已登录到我的网站:

if ( $_SESSION['login'] == 1 ) {
    // You are logged
} else {
    // login/register
}

我还有另一个包含用户 ID 的会话。像这样的东西:

echo $_SESSION["Id"]; 
/* It is containing the user's id (an integer number).
   Something like: 234124
*/

现在我想取消设置$_SESSION['login']对于具有特定 id 的用户。例如我想要unset($_SESSION['login']) for $_SESSION["Id"] = 234124。我怎样才能做到这一点?


Edit:我想做的就是:当用户更改密码时,我会删除他的所有 cookiecookies表将他从所有其他设备中注销。我还想删除他的会话。


更新答案

您在评论中提供了有用的详细信息:

当用户更改密码时,我需要注销他的帐户 他的所有其他设备。

您的问题本质上是如果您使用会话,如何跨设备实现单点登录/注销。

这是一个简单的方法:

  1. 用户登录,您设置userID and lastSeen会议中。lastSeen保存一个时间戳。会话中不保存用户可以更改的信息。
  2. 用户登录到您设置的另一台设备userID and lastSeen在那次会议上
  3. 跨设备的会话始终同步(除了lastSeen)因为它们只保存不变的数据(userID、userName)
  4. 在你的数据库中,有一个logout带列的表userID requestTime
  5. 如果用户注销、更改密码或执行任何其他需要重新登录的操作,请致电session_destroy()并添加一个条目logout table
  6. When user tries to access restricted page, you check:
    • Does $_SESSION['userID']存在(意味着用户在某个时刻登录)
    • Is lastSeen在过去 30 分钟内(否则,请致电session_destroy()并请求再次登录)
    • 是否存在包含用户 ID 的注销请求logoutrequestTime > lastSeen(意味着自从我们上次见到该用户以来,她请求从另一台设备注销)。如果是这样,session_destroy()并需要再次登录。

原答案

会话是单独处理的。当请求到达时,$_SESSION仅该用户的数据被加载到内存中。因此,如果用户 ID 5 发出请求,您将无权访问用户 7 的会话数据(无需进行一些黑客攻击)。

如果您想取消设置当前用户的会话,无论该用户是谁,您都可以执行以下操作之一:

session_destroy(); //clears everything for the current user
unset($_SESSION['login']);// clears just this variable for the current user

如果从一个用户的浏览会话中,您想扰乱另一个用户:我没有看到用例。听起来这会对安全产生负面影响,这让我质疑你的更大架构。它违背了会话的全部目的:在服务器上为每个用户提供一个隔离的、持久的存储柜。

无论如何,要从另一个用户的浏览活动中更改随机用户的会话数据(同样,为什么?),请使用数据库来保存和检索值。表格可以简单如下:

userID | sessionData | sessionExpires

您可以将会话数据存储在 JSON 中json_encode并检索它json_decode对于任何浏览会话中的任何特定用户。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何取消特定用户的会话? 的相关文章

  • 使用 strtotime() 计算时间差(以小时和分钟为单位)[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions time1
  • 如何将自定义类型数组传递给 Postgres 函数

    我有一个自定义类型 CREATE TYPE mytype as id uuid amount numeric 13 4 我想将它传递给具有以下签名的函数 CREATE FUNCTION myschema myfunction id uuid
  • 更新重复密钥上的复合密钥 [重复]

    这个问题在这里已经有答案了 我需要更新新行 如果两者都满足 date dat and empId who 作为复合键 但如果其中之一或两者不同 则插入 sql INSERT INTO history SET endtimestamp now
  • 如果我使用带有表单身份验证的 WCF,php 或 java 客户端将如何进行身份验证?

    我有一个通用的概念验证 WCF 服务 它使用表单身份验证来保护访问 当我的客户端是 NET 时 一切都很好 vb 代码如下 Dim client As SupplierServiceClient New SupplierServiceCli
  • 使用 PHP/COM/ADSI/LDAP 更改 AD 密码

    我已经被这个问题困扰了好几天了 我尝试了各种解决方案均无济于事 请帮忙 Problem 我们有两个域控制器 它们不属于我们的管理范围 我们能够通过端口 389 上的 LDAP 进行连接 但无法通过端口 636 安全连接 我们正在开发一个系统
  • 基本表创建 fpdf

    我找不到使用 fpdf 制作表格并从 mysql 数据库获取数据的合适教程 我只是想知道如何创建一个 我在网上尝试示例时遇到了很多错误 例如 我有 名字 中间名 姓氏 年龄 和 电子邮件 列 如何使用 fpdf 创建表格并回显数据库中的条目
  • $_POST、$_GET 和 $_REQUEST 之间有什么区别?

    我对这些超级全局变量有点困惑 POST GET and REQUEST 在 PHP 中 在 PHP 中哪些场景需要使用这些变量 这三个变量的主要区别是什么 POST是在使用 application x www form urlencoded
  • TCPDF/PHP 和字体:大写数字(血统数字?旧样式?)

    我得到了一种特殊的字体 上面有这样的数字 例如 正如您在 3 上看到的 一些数字下降到基线以下 我想要实现的是 这些数字不会低于该线 并且看起来像这样 在 Word 中 可以在相同字体的字符设置中轻松设置 如何在 TCPDF 中呈现数字 我
  • Facebook Graph API v3.1 开发人员访问令牌权限限制

    如您所知 Facebook 将其 API 升级到了 V3 1 现在正在慢慢地淘汰旧的 API 和应用程序 因此我们必须迁移到新的 API 他们做出了一些艰难的决定 这对垃圾邮件网站来说是好事 但对开发人员来说也很难 提醒 Graph API
  • PHP 的 PDO 可以限制为单个查询吗?

    PHP 的 PDO 允许通过 query 方法或作为准备好的语句同时执行多个查询 以下两个示例均有效 Two SQL queries query SELECT FROM table DROP table Execute via query
  • 通过 AJAX 发送 XML

    我在 jQuery 中创建了一个 xml 文档 如下所示 var xmlDocument
  • PHP/MySQL:如何在网站中创建评论部分[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我不会问 如何使用 PHP MySQ
  • 访客客户检查 Woocommerce 订单账单电子邮件时可享受首单折扣

    通过对照正在处理和已完成的订单检查来宾客户的电子邮件地址 如果电子邮件没有订单 我想给来宾 首单折扣 如果这能在客人输入电子邮件时发生 那就太好了 我想我已经成功制作了折扣代码 现在我请求帮助合并这两个代码 使其一切正常 这是折扣代码 ad
  • Opencart最低下单价不包括一类

    我正在使用 opencart 并成功为所有交易添加了最低订单价格 这是我使用的代码 div div div class warning Minimum 10 Euro to checkout div 现在我想从中排除一个类别 以便可以购买该
  • 根据通过 AJAX 请求的用户输入重绘 google 图表

    我有一个谷歌图表从我的数据库中提取数据 它可以按我想要的方式工作 根据 URL 中的 get 请求 它从所选表中提取数据 我想根据下拉菜单中选定的表通过 ajax 更新此图表 我无法突破的部分是通过 ajax 获取数据响应 我认为下面的代码
  • 海报风格的电子邮件验证

    我正在考虑创建一个类似于Posterous的服务 用户可以在其中发布到固定地址 例如 电子邮件受保护 cdn cgi l email protection然后帖子的身份验证将基于发件人地址和标头签名的某种组合 Posterous 似乎正在做
  • 高效插入和更新时检查唯一性

    我的员工表中有 2 列 每列值必须是唯一的 staff code staff name staff id staff code staff name 1 MGT Management 2 IT IT staff 当向表中插入或更新项目时 我
  • 如何在服务器上保存用户凭据以在后台运行查询

    背景 我们有一个 ASP NET Silveright Web 应用程序 silverlight客户端显示用户 图形形式的特定数据 它从服务器请求数据 问题 由于服务器必须执行底层数据库查询 获取这些数据的成本很高 因此客户端必须等待 优化
  • asp.net cookie、身份验证和会话超时

    我有一个使用表单身份验证的 asp net 网站 我在会话中保留一些信息 例如用户名 用户 ID 电子邮件等 我通过在身份验证 cookie 上设置较长的到期日期来允许用户保持登录网站的状态 因此 当用户仍处于身份验证状态时 会话过期的情况
  • 无法与站点通信以检查致命错误

    无法与站点通信以检查致命错误 因此 PHP 更改已恢复 您需要通过其他方式上传 PHP 文件更改 例如使用 SFTP 有什么解决办法 我正在 WordPress 中编辑头文件 遇到这个问题 尝试这个 我有同样的问题并决定调查一下 更改 wp

随机推荐