【问题标题】:Redirect Codeigniter user when using back button使用后退按钮时重定向 Codeigniter 用户
【发布时间】:2015-08-22 21:56:28
【问题描述】:

如果用户在登录我的 Codeigniter Web 应用程序后直接点击浏览器的“后退”按钮,他们将被带回登录表单。相反,我希望将用户定向到主页。

另外,当用户注销时,我想阻止访问“帐户”页面,但我也不知道该怎么做。

有什么建议吗?

我在下面附上了我的登录模型。

控制器:

class Account extends CI_Controller{
public function __construct()
{
    parent::__construct();

    $this->load->model('masterentry_model');
    $this->load->model('account_model');
    // Your own constructor code
}
public function index()
{
    if($this->session->userdata('logged_in') != TRUE){//checking loged in
    $this->load->view('signin'); 
    }else{
        $data['location'] = $this->masterentry_model->getLocation();
        $data['activeUser'] = $this->masterentry_model->userActive();
        $data['flag'] = "home";
        $this->load->view('home', $data);
        //redirect('account');
    }
}

//login process
public function loginsum(){

    $this->load->library('form_validation');
    $this->form_validation->set_rules('password', 'password', 'required|callback_check_exists');

    if($this->form_validation->run() == true){
        if($this->session->userdata('logged_in') == TRUE) 
        {
            //$path =  get_redirect_path();

            redirect('account');
        }
    }
    else{
        if($this->session->userdata('logged_in') != TRUE) 
        { 
        $this->load->view('signin');
        }
        else
        {
        redirect('account');    
        }
    }
}

//check email and password with database correct or not 
public function check_exists($password){
    $email = $this->input->post('email');
    $result = $this->account_model->logincheck($email, $password);
    if($result == 0)
    {   
        $this->form_validation->set_message('check_exists', 'Email (or) Password incorrect');
        return false;
    }
    else
    {
        return true;    
    }

}

//logout process 
public function logout(){
    $session_array = array(
            'email' => "",
            'user_id' => "",
            'logged_in' => FALSE
        );

        $this->session->unset_userdata($session_array);

        $this->index();
}

}

型号:

class Account_model extends CI_Model{

 function __construct(){
    parent::__construct();
 }

 public function logincheck($email, $password){
    //echo "SELECT * FROM `account` WHERE email = '$email' AND password = '$password)'";
    $query = $this->db->query("SELECT * FROM `account` WHERE email = '$email' AND password = '".md5($password)."'");

    //checking row existes
    if($query->num_rows() == 1){
        $row = $query->row();
        $session_array = array(
            'email' => $row->email,//storing email in session 
            'user_id' => $row->id,//storing userid in session 
            'logged_in' => TRUE
        );
        $this->session->set_userdata($session_array);

        return 1;
    }else{
        return 0;
    }
  }

}

【问题讨论】:

  • 细微的语法变化,希望能阐明意图。

标签: php codeigniter login


【解决方案1】:

controllerconstructor function 中包含这些标头,以防止缓存上一页

$this->output->set_header('Last-Modified:'.gmdate('D, d M Y H:i:s').'GMT');
$this->output->set_header('Cache-Control: no-store, no-cache, must-revalidate');
$this->output->set_header('Cache-Control: post-check=0, pre-check=0',false);
$this->output->set_header('Pragma: no-cache');

【讨论】:

  • 嗨,在我的注销应用程序之后,我的 url 变成这样(localhost/barteradmin/account/logout)之后我登录意味着并单击返回按钮意味着我的 url 变成这样(localhost/barteradmin/account/logout)之后我的应用程序得到登出。我想做 facebook 应用程序。
  • 是的,它不起作用。我的浏览器在登录后返回。注销后它的工作。
猜你喜欢
  • 1970-01-01
  • 2012-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-23
  • 2020-09-12
  • 2015-09-08
  • 2011-07-08
  • 2016-11-07
相关资源
最近更新 更多