-2

初めてuser1としてログインし、新しいタブを開いて 2 回目にuser2としてログインすると、セッションで問題が発生します。ユーザー 2 は user1 権限のすべてのページを表示できます。php でこの問題を解決するにはどうすればよいですか? user2user1の最初のタブに移動した場合に、最初のページをログイン ページとして表示する方法

   $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');
        .......
}
4

2 に答える 2

1

セッション ID Cookie を破棄し (セッション ID を保存するために Cookie を使用していると仮定します)、ユーザーのログアウト時に $_SESSION スーパーグローバルの設定を解除する必要があります。

また、ログインしたユーザーがログアウトせずに別のユーザーとして直接ログインできるかどうかも、質問では少し不明確です。通常、ほとんどのアプリケーションでは、ユーザーに新しいログイン プロンプトを表示する前に、特定のログアウトを行う必要があります。ただし、すでにログインしているユーザーのログイン変更をアプリケーションで許可する必要がある場合は、ログイン変更時にセッション Cookie と変数も破棄する必要があります。

于 2012-07-31T17:39:10.927 に答える
-1

さて、ここでの秘訣は、ユーザーがログインしているときにログインフォームを非表示にすることです! それは、ログイン関数を呼び出すと思われる base_url() が呼び出され、ユーザーがログインすると、ログイン画面ではなくアプリケーションにリダイレクトされます。これが役立つことを願っています!

于 2015-09-25T00:30:54.057 に答える