2017-03-08 48 views
1

我在Codeigniter会话中遇到问题,当我登录时,系统正在工作并且会话已设置,但是当我在浏览器中打开新选项卡并再次登录时,当前会话被新记录的会话。我想要实现的是如果会话已设置,则直接重定向到主页,如果未设置会话,则继续登录页面。防止在CodeIgniter中替换会话

我的确研究了一些这方面的问题,不知怎的,我尝试了这个,但没有像预期的那样工作。

控制器:

public function index(){ 

    if(isset($_SESSION['Username'])){ 
     redirect('Isidran/home' , 'refresh'); 
    } else { 

     $data['title'] = 'Isidran Club and Organization Online Information System - Login'; 
     $this->load->view('pages/login/index', $data); 
    } 
} 

型号:

public function login($data) 
    { 

     $username = $data['username']; 
     $password = $data['password']; 
     $query =$this->db->query("SELECT * FROM tbl_user WHERE user_Username ='$username' AND user_Password ='$password'"); 
     $row =$query->row(); 
     if(isset($row)){ 
      $user_ID =$row->user_ID; 
      $username =$row->user_Username; 
      $FirstName=$row->user_FirstName; 
      $LastName = $row->user_LastName; 
      if($row->user_level == 0){ 
       $permission = TRUE; 
       $userdata = array('user_ID' => $user_ID, 'Username' => $username, 'FirstName' => $FirstName, 'LastName' => $LastName, 'logged_in' => TRUE, 'permission' => $permission); 
      } else { 
       $userdata = array('user_ID' => $user_ID, 'Username' => $username, 'FirstName' => $FirstName, 'LastName' => $LastName, 'logged_in' => TRUE); 
      } 
      $this->session->set_userdata($userdata); 
     return true; 
     } else { 
     return false; 
     } 
    } 
+0

在控制器还采用了CI Session库 – Naincy

回答

1

使用以下设置你的会话数据,通过在阵列数据($ session_data是)

$this->session->set_userdata('logged_in', $session_data); 

,并按照检查如果会话存在

if (isset($this->session->userdata['logged_in'])) { 
URL 
} 

使用上面的if语句登录页面或使用自己的逻辑来检查每个页面。

阅读使用会话的下列完整的方法

https://www.formget.com/form-login-codeigniter/