ユーザーが私のサイトにログインすると、すべてのユーザー情報を取得し、それを というセッションに保存しuser_info
ます。これは、ほぼすべてのページで必要となるユーザーに関する共通情報を取得するために、継続的にデータベースを検索する必要がないようにするためです。var がダンプされると、ユーザー情報セッションは次のようになります。
array(17) {
["user_id"]=>
string(7) "1165771"
["username"]=>
string(2) "Jake"
["who"]=>
string(1) "1"
["seeking"]=>
string(1) "2"
["orientation"]=>
string(1) "1"
["dob"]=>
string(10) "1985-07-08"
["zip"]=>
string(5) "25140"
["email"]=>
string(17) "foo@bar.com"
["account_status"]=>
string(1) "1"
["role"]=>
string(1) "1"
["paused"]=>
string(1) "0"
["latitude"]=>
string(11) "37.89955100"
["longitude"]=>
string(12) "-81.52641100"
["region"]=>
string(2) "WV"
["city"]=>
string(5) "NAOMA"
["avatar"]=>
string(21) "1165771_50c6816a8fad1"
["email_setting"]=>
string(1) "1"
}
現在、ユーザーが情報の一部を更新できる「アカウント設定」ページがあります。したがって、たとえばユーザー名を変更した場合、これを実行してセッションを更新し、新しい値が含まれるようにします。
$_SESSION['user_info']['username'] = 'NEW VALUE';
ここで問題です。管理パネルでモデレートしているときにユーザーを禁止すると、そのユーザーのアカウント ステータスがデータベースで 1 (アクティブを意味する) から 2 (禁止を意味する) に更新されます。ただし、この変更を user_info セッションに反映させるために、これを行うことはできません。
$_SESSION['user_info']['account_status'] = 2;
コンピューター上のユーザーのセッションではなく、コンピューター上のユーザー情報のみを更新するためです。技術的に禁止されていても、ログアウトして再度ログインを試みるまで、引き続きサイトを使用できます。
ログイン SQL クエリが true を返すには、資格情報を正しく取得するだけでなく、ユーザーのアカウント ステータスも 1 である必要があるため、ユーザーはエントリできません。
質問
アカウントに変更を加えたときに、個々のユーザーのセッションを更新するにはどうすればよいですか?
ユーザーのセッションをサーバーから完全に削除して、すぐにログアウトする方法。