删除会话和cookie然后创建新的 - 只在下一页加载时生效

时间:2013-06-04 19:55:26

标签: php codeigniter session cookies

我使用Codeigniter(这可能是我的问题的原因),我通过几个cookie和会话变量识别用户。当用户想要注册但被检测到已经拥有基于他们的cookie的帐户(例如,其他人在他们的计算机上注册)时,这是在提交注册表单后控制器中当前发生的事情:

  • 如果检测到用户#4已经有帐户但仍然注册:删除 会话和cookie,然后创建新的用户识别会话和 cookie作为用户#5并继续使用数据库内容。
  • 否则以用户#4继续处理数据库内容。

问题:删除会话和/或Cookie只会在下一页加载时发生,这意味着我向用户4签名(覆盖当前用户4)但它成为用户5(谁拥有下一页加载后,DB中没有任何内容。正确的行为是立即删除,这样当我创建新的会话+ cookie时,它会正确地为用户#5创建帐户。

如何立即删除会话变量+ Cookie,而不是在下一页加载?

更新: 经过一些测试后会发生这种情况:在下一页加载之前不会删除cookie;会话变量会立即删除,但在下一页加载之前不会设置。因此需要修复2个不同的问题,以便它们立即被删除并重新设置。

2 个答案:

答案 0 :(得分:0)

detect user
delete cookies
    optionally you could create new session data right here
redirect to some page of your choosing :)

这样它会正确地拾取它(并创建新数据)

答案 1 :(得分:0)

最后,我更改了我的脚本以直接创建新用户,而不是依靠cookie或会话来识别用户,这意味着我不必担心何时删除cookie或会话变量。