Php 当我更改密码时,如何进行销毁会话?

Php 当我更改密码时,如何进行销毁会话?,php,codeigniter,session,login,logout,Php,Codeigniter,Session,Login,Logout,我是CodeIgniter框架的中间人 我将开发一个新的系统,具有“管理员、经理、员工”角色。我需要如果管理员或经理更改任何员工密码,员工会话需要销毁并从其帐户注销 我对此一无所知。任何人都可以帮助我如何执行此操作以及为此选择哪种会话保存路径?管理员,经理端:他们更改员工密码 在员工端:每次检索员工数据时,检查密码状态是否更改。如果是,则销毁该员工的会话 再次成功登录后,请将密码状态设置为null或其他值。有一个简单的解决方案: 1-在users表中添加一个名为“forcelogout”的字段。

我是CodeIgniter框架的中间人

我将开发一个新的系统,具有“管理员、经理、员工”角色。我需要如果管理员或经理更改任何员工密码,员工会话需要销毁并从其帐户注销


我对此一无所知。任何人都可以帮助我如何执行此操作以及为此选择哪种会话保存路径?

管理员,经理端:他们更改员工密码

在员工端:每次检索员工数据时,检查密码状态是否更改。如果是,则销毁该员工的会话


再次成功登录后,请将密码状态设置为null或其他值。

有一个简单的解决方案:

1-在users表中添加一个名为“forcelogout”的字段。例如,它可以是一个带有两个选项“Y”或“N”以及默认值“N”的枚举

ALTER TABLE `users` ADD COLUMN `forcelogout` ENUM('Y','N') NOT NULL DEFAULT 'N' COMMENT 'Y: force user to logout, N: nothing to do'
2-更新用户密码时,将该字段值更新为“N”

3-在父控制器(application/core/MY_controller.php)中,检查“forcelogout”值,如果是“Y”,则注销用户。然后将值更新为“N”以避免循环

public function __construct()
{
    $this->do_we_need_to_logout_user();
}

private function do_we_need_to_logout_user(){
    $this->load->model('users_model');
    $user = $this->users_model->get_user($this->session->user_id);
    if ( $user[0]->forcelogout == 'Y' ){
        $user_id = $this->session->user_id;
        $this->session->sess_destroy();
        $user = array();
        $user['forcelogout'] = 'N';
        $this->users_model->update_user($user_id, $user);
        redirect('/login');
    }
}

您能否成功更新员工数据?还有会话销毁过程吗?为什么管理员必须编辑员工的密码,并且员工必须立即注销?显然,如果员工已登录,他们有权登录,因此密码是否更改并不重要,只在他们再次登录(或尝试登录)时才重要。这种逻辑需要大量的开销——正如Karlo指出的,只要用户在站点上做了一些事情,就会检查密码是否被更改。如果您想阻止用户再次登录,只需禁用/取消禁用系统…#alex:一旦用户注销,这将不会有问题。我需要,如果我已经删除了一名员工,我会去更改密码或使他们的状态不活动的html。我需要如果我比任何人都改变,我需要破坏他们的会话。这怎么可能呢?尝试创建一个ajax函数来检查密码的更改。此iis设置在时间间隔上。然后,在发生更改时,销毁会话并调用重定向。听起来好像有很多意外情况,我认为这是最好的方法。但是我们可以通过基于数据库的会话,通过使用键blaa blaa来实现吗,。???