为什么我在codeiginitor中获取当前会话的先前会话数据,即使在销毁前一个会话之后也是如此

时间:2017-07-31 07:15:49

标签: php html codeigniter session

我在功能profile()中遇到问题。在这种方法中,我使用session从电子邮件中获取数据。

登录时,显示当前数据。但是当我点击配置文件时,它会显示以前的会话数据,刷新后会成为当前的会话数据。 enter image description here 上次会议数据

刷新后显示当前会话

enter image description here

我的控制器文件是admin.php

admin.php的

<?php 
class Admin extends CI_Controller{

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

        // Load form helper library
        $this->load->helper('form');
        //Load foam valodation library
        $this->load->library('form_validation');
        // Load the model
           $this->load->model('adminmodel');
    }

    public function index(){

        // Load our view to be displayed        
        $this->load->view('admin/login');
    }

// Check for Admin login process    
    public function dashboard(){        

        // Validate the user can login      
        $this->form_validation->set_rules('email', 'Email', 'required');
        $this->form_validation->set_rules('password', 'Password', 'required');

          if ($this->form_validation->run() == FALSE)   //checking validation
          {         
            if(isset($this->session->userdata['logged_in']))
            {
                $this->load->view('admin/dashboard');
            }
            else
            {
                $this->load->view('admin/login');
            }           
          } 

         else
         {   //validation are true                           
            if (isset($_POST['login']))
            {
                $email = $this->input->post('email');
                $password =$this->input->post('password');
                // Validate the admin can login
                $result = $this->adminmodel->validate($email,$password);
                if ($result) {//if the user credidential is validated
                    $data = array(
                            'email' => $this->input->post('email'),
                            'is_logged_in' => true
                    );
                    print_r($data);
                }
                // Add user data in session
                $this->session->set_userdata($data);
                //load dashboard and passing value
                $this->load->view('admin/dashboard',$result);
            }
         }
    } //end of dashboard

    public function profile(){
        if($this->session->userdata('is_logged_in')){
        $email = $this->session->userdata('email');
        $result = $this->adminmodel->fetchdata($email);
        print_r($result);
        $this->load->view('admin/profile',$result);
        }
        else
        {
            echo "failed profile";
        }

    } // end of profile 

    // Logout from admin page
    public function logout() {

        // Removing session data
        $sess_array = array(
                'email' => '',
                'is_logged_in'=>false               
                           );
        $this->session->unset_userdata($sess_array);
        $data['message_display'] = 'Successfully Logout';
        $this->load->view('admin/login', $data);
    }

}
?>

模型文件

adminmodel.php

<?php
class Adminmodel extends CI_Model{

        public function validate($email,$password)
        {   
          $query = $this->db->where(['email'=>$email,'password'=>$password])
                           ->from('login')                
                           ->get();               
           $result = $query->row();
            return $result;     
         }

         public function fetchdata($email)
         {
            $query = $this->db->where(['email'=>$email])
            ->from('login')
            ->get();
            $result = $query->row();
            return $result;
         }
}

profile.php

<?php

echo " I am in Profile " . $email;

?>

<!DOCTYPE html>
<html>
<head>
    <title>Profile</title>
</head>
<body>

    <p>Name : <input type = "text" value="<?php echo $name; ?>" /><p>
    <p>Mobile : <input type = "text" value="<?php echo $mobile; ?>" /> </p>
    <p>Address : <input type = "text" value="<?php echo $address; ?>" /> </p>
    <p>Email : <input type = "text" value=" <?php echo $email;?>" /> </p>

</body>
</html>

1 个答案:

答案 0 :(得分:-1)

在logount而不是unset数据之后尝试以下操作,完全破坏会话

$this->session->sess_destroy();