2017-07-31 38 views
0

我在功能profile()中遇到问题。在这种方法中,我使用会话从电子邮件中获取数据。为什么即使在销毁之前的会话之后,我仍然在codeiginitor中获取本届会议的会话数据

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

我的控制文件是admin.phpenter image description here 上次会话数据

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> 
+0

听起来像一个缓存的问题,如果您需要手动刷新才能看到当前会话数据。刷新不应更改会话数据,它应该在第一次加载时存在。但问题是,第一次加载是否发生,或者页面是否直接来自网络服务器或浏览器的缓存。我建议在页面中添加一个时间戳,如果这样会显示正确的时间并输入错误的数据,以确保页面实际上是在点击配置文件时加载的。 – bardiir

回答

-1

尝试以下,logount而不是取消设置数据后,销毁会话完全

$this->session->sess_destroy(); 
+0

无法显示上次会话数据 –