在PHP中编辑另一个用户的会话

7

在PHP中,除了当前用户之外,是否有可能编辑另一个用户的会话?如果可能,该如何实现?


1
当然,你可以手动命名你的会话,给PHP完全访问存储会话的临时文件夹,并破坏你网站的安全性! - animuson
没有必要这样做,为什么要让两个用户共享同一个会话?每个用户只需要一个会话,就足够了。 - Ben
1
@Ben:也许他希望他的管理员会话对每个访问他网站的人都可见,而不需要他们知道密码? - animuson
@animuson - 更糟糕的是,除非这是一个演示网站。否则他可以覆盖登录系统。 - Ben
6
我有一个合法的使用案例:允许管理员修改已登录用户的帐户,而无需强制他们注销。 - Brilliand
1
这些关于“两个用户共享同一会话”和“管理员会话可被所有人访问”的内容是什么意思?这与OP所问的无关,相反,可以想象PHP实时编辑特定用户的会话! - KittenCodings
2个回答

11

有几种方法可以在PHP中编辑另一个用户的会话:

  1. 第一种方法是获取想要编辑会话的用户的SessionID;

    session_id($SessionID);
    
    // and then enter code your logic to change session data here;
    
    如果您将会话数据存储在数据库中,则直接在数据库中操作数据会更加容易,这样当应用程序再次请求数据时,它会更新用户会话。
    请记住,您可以随意操纵用户会话,唯一需要的是 SESSION_ID。如果您掌握了SESSION_ID,那么您就赢得了这场游戏。

使用 session_id() 函数访问其他用户的会话是否可能?我认为该函数仅用于更改特定用户当前会话的会话 ID。 - BoltClock
2
是的,这是可能的,但唯一需要做的是将session_id()还原为当前用户的实际session_id(),否则会造成很大的混乱。因此,您需要按以下方式编写代码:
  • 备份当前用户的session_id
  • 使用要更改数据的用户的session_id初始化会话。
  • 更改数据的逻辑
  • 将session_id重置为您已备份的实际用户session id。
我想这应该可以工作 :)
- deej

2

这取决于服务器用于存储会话数据的方法。我认为可能有几种存储方式,例如数据库、服务器上的文件、memcache服务器等,因此您必须使用适当的方法。

不管怎样,我只做了5个月的Web编程,所以我不能确定我所说的是否正确。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接