登录后按下后退按钮时,将登录用户重定向到主页

时间:2012-10-23 04:40:51

标签: php codeigniter

我目前正在学习使用codeigniter作为我的框架的MVC的基础知识,并且我创建了一个登录页面。现在我登录后已经重定向用户并存储会话数据,但问题出在我登录后(我在哪里重定向到另一个页面)然后按下后退按钮登录页面仍然显示,除非我突出显示地址中的URL栏和按下回车,我再次回到重定向页面。好吧,我知道这是因为我做过的会话检查,但我需要一个解决方案,我可以解决它,让用户不要再回到登录页面,除非他退出。对于已注销的用户,除非他/她再次登录,否则不会返回到某个页面。

要详细说明我想要发生的事情,就像在facebook登录中一样,在您登录并点击浏览器上的后退按钮后,Facebook仍然会将您重定向到您的主页而不是登录页面。退出同样的东西。

到目前为止,这是我的控制器,我认为这解释了一切。如果我在我的代码中做了一些裁员并且明白我是这方面的新手,请纠正我。 :)

public function index()
{
    $data['error'] = null;
    $username = $this->input->post('username');
    $password = $this->input->post('password');
    $data['login'] = $this->login_model->get_login_credentials($username,$password);
    $data['session'] = $this->login_model->get_session($username);


    //CHECK IF THE $PAGE VIEW IS EXISTING
    if ( ! file_exists('application/views/pages/login.php'))
    {
        // IF PAGE DOESN'T EXISTS SHOW 404 ERROR
        show_404();
    }

    if(($this->input->post('login')=='Login'&&$data['login']==1)||($username==$data['session']['username'])){
        //SUCCESS LOGIN
        $this->load->helper('url');  
        redirect('news');
    }

    if($this->input->post('login')=='Login'&&$data['login']!=1){
        //LOGIN FAILED
        $data['error'] = "Invalid login credentials.";
    }


    //FOR THE TITLE PART
    $data['title'] = ucfirst('login'); 

    $this->load->view('pages/login/login', $data);
    $this->load->view('templates/footer', $data);

}

3 个答案:

答案 0 :(得分:0)

首先检查您可以使用的会话数据:

$this->session->userdata('item');

这里

$username==$data['session']['username'])

也许你可以在索引的开头设置1检查:

if($this->session->userdata('username'))
redirect('news');

不要忘记在调用这些函数之前加载所需的所有助手和库。

对于会话,请检查http://codeigniter.com/user_guide/libraries/sessions.html

答案 1 :(得分:0)

如果您不想在成功登录后进入登录页面,则可以在登录页面中测试会话,并在设置session时重定向到其他页面。试试这段代码。

if ($data['session']['username']) != NULL) {
    redirect('home_page','refresh');
}

答案 2 :(得分:0)

这个问题在这里已经解决了:Hashem Qolami的Clear cache on back press to prevent going back on login page or previous page after logout同样的问题,但是从不同的角度来看。