私は Codeigniter を使用しており (これが問題の原因である可能性があります)、いくつかの Cookie とセッション変数によってユーザーを識別しています。ユーザーがサインアップしたいが、Cookie に基づいて既にアカウントを持っているように検出された場合 (たとえば、他の誰かが自分のコンピューターにサインアップした場合)、サインアップ フォームが送信された後、現在コントローラーで次のように処理されます。
- 検出されたユーザー #4 が既にアカウントを持っているが、まだサインアップしている場合: セッションと Cookie を削除し、新しいユーザー識別セッションと Cookie をユーザー #5 として作成し、DB の処理に進みます。
- それ以外の場合は、ユーザー #4 として DB を続行します。
問題: セッションおよび/または Cookie の削除は、次のページの読み込み時にのみ発生します。つまり、ユーザー 4 をサインアップ (現在のユーザー 4 を上書き) しますが、次のページが読み込まれるとすぐにユーザー 5 (DB に何もない) になります。ページの読み込み。正しい動作は、削除の瞬間を取得することです。これにより、新しいセッション + Cookie を作成すると、ユーザー #5 のアカウントが正しく作成されます。
次のページの読み込み時ではなく、セッション変数と Cookie を即座に削除するにはどうすればよいですか?
更新: いくつかのテストの後、次のページが読み込まれる前に Cookie が削除されません。セッション変数は即座に削除されますが、次のページが読み込まれるまで設定されません。そのため、2 つの異なる問題を修正して、両方が即座に削除され、再度設定されるようにします。