在PHP Codeigniter中按“后退”按钮时,如何停止将登录用户重定向到登录页面

问题描述

我使用用户名和密码登录用户登录后,用户重定向到仪表板,如果用户按下浏览器的后退按钮,它将把用户重定向登录页面,而我想重定向用户登录到已经登录的仪表板。如果有人可以帮助我实现该功能,我将不胜感激。 这是我的登录名。 PHP控制器

<?PHP
class Login extends CI_controller {
public function __construct()
{
    parent::__construct();
    
    $this->load->library('form_validation');
    $this->load->library('encrypt');
    $this->load->model('login_model');
    

}

function index()
{
    //echo  CI_VERSION; die;
    //echo  $this->encrypt->encode('123456');
    //echo  "<br>".$this->encrypt->decode('ADxTYFI1ATFSYwFn');
    //die;
    $this->load->view('login');

}
function validation()
{
    //  print_r($_REQUEST);
    // die;
  
    $this->form_validation->set_rules('username','Username','required|trim' );
    $this->form_validation->set_rules('password','Password','required');

    if ($this->form_validation->run())
    {
        
        $res = $this->login_model->can_login($this->input->post('username'),$this->input->post('password'));
        if(is_array($res)){
            $stored_password = $res['stored_password'];
            $row = $res['row'];
            if(password_verify($this->input->post('password'),$stored_password)){
                $userID = $row->id;//die;
                $this->session->set_userdata('admin',$userID);
                redirect('admin/dashboard');
                
            }else{
                $this->session->set_flashdata ('message','Invalid Credentils');
                redirect('admin/login');
            }
        }else{
            $this->session->set_flashdata ('message','Invalid Credentils');
            redirect('admin/login');
        }
        

    }
    else
    {
      $this->index();
    }
  }
 }

这是我的login_model.PHP

<?PHP
class Login_model extends CI_Model
{
function can_login($username,$password)
{
    $this->db->where('username',$username);
    $query = $this->db->get('user_login');

    if($query->num_rows() > 0)
    {
        $result = $query->row();
        //print_r($result);die;
        $stored_password = $result->password;
        $return = array('stored_password'=> $stored_password,'row' => $result);
        return $return;
    }
    else
    {
        return FALSE;
    }

}

这是我的dashboard.PHP控制器

<?PHP
class Dashboard extends CI_Controller
{
 function __construct()
 {
    parent::__construct();
     if(!$this->session->userdata('admin'))
     redirect('admin');
    // else{
    //  redirect('admin/dashboard');
    // }
}
function index()
{
   $this->load->view('admin/dashboard');
}

function logout()
{  
     $this->session->sess_destroy();
     redirect('admin');
 }

}
    

解决方法

已解决, 我通过在我的login.php控制器中添加会话来解决了问题

public function __construct()
{
    parent::__construct();
    if($this->session->userdata('admin'))
     redirect('dashboard');
    $this->load->library('form_validation');
    $this->load->library('encrypt');
    $this->load->model('login_model');

}