【问题标题】:Log Out Destroy CodeIgniter注销 销毁 CodeIgniter
【发布时间】:2020-06-17 20:30:33
【问题描述】:

为什么我退出后无法销毁会话?

我的身份验证控制器

public function index(){
    $this->data['page_title'] = "User Login";
    $this->load->view('templates/master', $this->data);
}

public function login(){
    $username = $_POST['username'];
    $password = $_POST['password'];
    $data = $this->User_model->login ($username, $password);
    if($data){  
    $this->session->set_userdata('users', $data);
    $session_data = array(
        'username' => $username);
    $this->session->set_userdata($session_data);
    redirect('users');


    }
    else{
        $this->session->set_flashdata
        ('loginfail','<div class="alert alert-danger"><a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a>
        <strong>Danger !</strong> Invalid Email or Password .</div>');
       return redirect("auth");


    } 
}

public function logout()
{
    $this->session->unset_userdata(array('username','id')); 
    $this->session->sess_destroy(); 
    echo '<pre>'; print_r($this->session->all_userdata()); 
    exit; return redirect("auth");

}

我的 PHP:

<a href="<?= base_url('auth/logout')?>" data-toggle="modal" data-target="#logoutModal">
    <i class="fas fa-sign-out-alt fa-sm fa-fw mr-2 text-gray-400"></i>
    Logout
  </a>

【问题讨论】:

    标签: php codeigniter session logout destroy


    【解决方案1】:

    试试这个

     <?php defined('BASEPATH') OR exit('No direct script access allowed');
          class Auth extends MY_Controller {
    
        public function index(){
            /* You Should check Session before loading page */
          if(empty($this->session->userdata('id'))){
             redirect('users');
           }    
            $this->data['page_title'] = "User Login";
            $this->load->view('templates/master', $this->data);
    
             }
        public function login(){
            $username = $_POST['username'];
            $password = $_POST['password'];
            $data = $this->User_model->login ($username, $password);
            if($data){  
            $this->session->set_userdata('users', $data);
            $session_data = array(
                'username' => $username);
            $this->session->set_userdata($session_data);
            redirect('users');
    
    
            }
            else{
                $this->session->set_flashdata
                ('loginfail','<div class="alert alert-danger"><a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a>
                <strong>Danger !</strong> Invalid Email or Password .</div>');
               return redirect("auth");
    
    
            } 
        }
        public function logout()
        {
            $this->session->unset_userdata(array('username','id'));
            $this->session->sess_destroy();
            redirect("users");
    
        }
    }
    

    【讨论】:

    • 我试过了,但还是不行。 huhuhu 我不知道为什么这不起作用。
    • 检查会话数据是否被清除 print_r($this->session->all_userdata());
    • $this->session->unset_userdata(array('username','id')); $this->session->sess_destroy(); $this->session->all_userdata();返回重定向(“身份验证”);
    • $this->session->unset_userdata(array('username','id')); $this->session->sess_destroy();回声'
      '; print_r($this->session->all_userdata()) 退出;返回重定向(“身份验证”);
    • 出现错误消息:语法错误,意外“退出”(T_EXIT)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-12
    • 2014-04-02
    • 1970-01-01
    • 1970-01-01
    • 2013-10-02
    • 2016-03-21
    • 2014-01-19
    相关资源
    最近更新 更多