我使用 Codeigniter(这可能是我的问题的原因),我通过几个 cookie 和会话变量来识别用户。当用户想要注册但根据他们的 cookie 检测到已经有一个帐户时(例如,其他人在他们的计算机上注册了),这是在提交注册表单后控制器中当前发生的情况:
- 如果检测到用户 #4 已经有一个帐户但仍然注册:删除会话和 cookie,然后创建新的用户识别会话和 cookie 作为用户 #5 并继续使用数据库内容。
- 否则以用户 #4 的身份继续处理数据库内容。
问题:删除会话和/或 cookie 仅在下一页加载时发生,这意味着我注册用户 4(覆盖当前用户 4)但它会在下一次时成为用户 5(在数据库中没有任何内容)页面加载。正确的行为是立即删除,这样当我创建新会话 + cookie 时,它会正确地为用户 #5 创建帐户。
如何立即删除会话变量 + cookie,而不是在下一页加载时?
更新:经过一些测试后会发生这种情况:在下一页加载之前不会删除 cookie;会话变量会立即删除,但不会在下一页加载之前设置。所以要修复 2 个不同的问题,以便它们都被立即删除并重新设置。