php中的会话功能?防止在同一浏览器中进行多次登录

时间:2012-07-31 17:36:10

标签: php codeigniter

如果我第一次以 user1 身份登录,并且如果打开新标签并第二次以 user2 身份登录,我会在会话中遇到问题,用户2可以查看user1权限的所有页面,如何在php中克服这个问题?如果 user2 转到 user1 的第一个标签

,如何将第一个显示为登录页面
   $this->is_logged_in();
        $this->clear_cache();
    }
    function is_logged_in() 
    {
        $is_logged_in = $this -> session -> userdata('is_logged_in');
        if (!isset($is_logged_in) || $is_logged_in != true)
        {
            //redirect('/www.XXXX.ae');
        }
    }
    function clear_cache()
    {
        $this->output->set_header("Cache-Control: no-store, no-cache, must-revalidate, no-transform,max-age=0, post-check=0, pre-check=0");
        $this->output->set_header("Pragma: no-cache");
    }

function logout()
    {           
        $this->session->sess_destroy();
        $this->session->set_userdata('userId',"");
        $this->session->set_userdata('password',"");   
        $this->session->set_userdata('role',"");   
        $rurl = $this->session->userdata('rurl');
            redirect($rurl,'refresh');

    }

function login()
    { 
        $this->session->sess_destroy();
        $this->session->set_userdata('userId',"");
        $this->session->set_userdata('password',"");   
        $this->session->set_userdata('role',"");   
        $username   =   $this->input->post('username');
        $password   =   $this->input->post('password');
        .......
}

2 个答案:

答案 0 :(得分:1)

您需要确保销毁会话ID cookie(我假设您使用cookie来存储会话ID)并在用户注销时取消设置$ _SESSION超全局。

在您的问题中,似乎有点不清楚登录用户是否能够在不注销的情况下直接以其他用户身份登录。通常在大多数应用程序中,您甚至需要在向用户提供新的登录提示之前进行特定的注销。但是,如果您的应用程序需要允许已登录用户的登录更改,则还需要在登录更改时销毁会话cookie和变量。

答案 1 :(得分:-1)

好的,这里的诀窍是在用户登录时隐藏登录表单!也就是说,当我调用您的登录功能的base_url()被调用并且用户登录时,它会重定向到应用程序,而不是登录屏幕。我希望这有帮助!