重新生成PHP会话ID和双重刷新-浏览器没有收到新的cookie


Regenerating PHP session ID and double refresh - browser not recieveing the new cookie

我用自己的本机会话实现替换了有点bug的CodeIgniter会话库。

两者都以相同的方式操作,并在一段时间后更改会话ID,并且都遇到相同的问题,为了这个问题,假设会话每分钟都会重新生成。

当用户查看页面并等待一分钟时,在下一个页面请求中将重新生成会话ID。但是,当用户请求超时或"双重刷新"页面时会出现问题。浏览器没有接收到新的cookie,因此会在下一个请求时启动新的会话。因此,如果用户在重新生成ID时点击刷新,并连续快速再次点击刷新,他们将失去会话。

我知道更改会话ID是防止会话固定的好主意,但有什么办法解决这个问题吗?显然,增加ID重新生成的时间将限制这种情况发生的可能性,但这种情况似乎仍然有可能发生。

谢谢你的帮助!

  1. 将列"previous_session_ID"添加到数据库
  2. 将当前会话ID移动到"previous_session_ID"中,然后生成新的会话ID并将其存储在当前会话ID中
  3. 当用户尝试使用会话ID访问您的页面时,请检查当前ID和"previous_session_ID"

问题解决了-他们现在可以进行"双重刷新",并且仍然可以访问页面。