当用户登录到我的站点时,我会获取他们所有的用户信息并将其存储在一个名为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 的帐户状态。
问题
当我更改个人用户的帐户时,如何更新他们的会话。
如何从我的服务器中完全删除用户的会话,以便他们立即注销。