2014-09-28 92 views
0

好日子研究员。Codeigniter登录会话未知错误

我在CMS登录中遇到问题,当我单击登录按钮时,登录页面刷新并再次出现。 会话库已定义。会话加密密钥已设置。

登录控制器代码是:

<?php 
class User extends Admin_Controller { 

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

public function login(){ 

    $dashboard = 'admin/dashboard'; 
    $this->user_m->loggedin() == FALSE || redirect($dashboard); 

    $rules = $this->user_m->rules; 
    $this->form_validation->set_rules($rules); 
    if ($this->form_validation->run() == TRUE) { 
     // We can login and redirect 
     if ($this->user_m->login() == TRUE) { 
      redirect($dashboard); 
     } 
     else { 
      $this->session->set_flashdata('error', 'That email/password combination does not  exist'); 
      redirect('admin/user/login', 'refresh'); 

    } 
} 
$this->data['subview'] = 'admin/user/login'; 
$this->load->view('admin/_layout_modal', $this->data); 
} 

public function logout(){ 
    $this->user_m->logout(); 
    redirect('admin/user/login'); 
} 
} 

登录型号代码:

<?php 
class User_M extends MY_Model 
{ 

protected $_table_name = 'users'; 
protected $_order_by = 'name'; 
public $rules = array(
    'email' => array(
     'field' => 'email', 
     'label' => 'Email', 
     'rules' => 'trim|required|valid_email|xss_clean' 
    ), 
    'password' => array(
     'field' => 'password', 
     'label' => 'Password', 
     'rules' => 'trim|required' 
    ) 
); 

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

public function login() 
{ 
    $user = $this->get_by(array(
     'email' => $this->input->post('email'), 
     'password' => $this->hash($this->input->post('password')), 
    ), TRUE); 

    if (count($user)) { 
     // Log in user 
     $data = array(
      'name' => $user->name, 
      'email' => $user->email, 
      'id' => $user->id, 
      'loggedin' => TRUE, 
     ); 
     $this->session->set_userdata($data); 
    } 
} 

public function logout() 
{ 
    $this->session->sess_destroy(); 
} 

public function loggedin() 
{ 
    return (bool) $this->session->userdata('loggedin'); 
} 

public function hash ($string) 
{ 
    return hash('sha512', $string . config_item('encryption_key')); 
} 
} 

回答

0

我建议不如把登录视图中的其他条件,

public function login(){ 
$dashboard = 'admin/dashboard'; 
$this->user_m->loggedin() == FALSE || redirect($dashboard); 
$rules = $this->user_m->rules; 
$this->form_validation->set_rules($rules); 
if($this->input->post()) {  //check if request if post 
if ($this->form_validation->run() == TRUE) { 
    // We can login and redirect 
    if ($this->user_m->login() == TRUE) { 
     redirect($dashboard); 
    } 
    else { 
     $this->session->set_flashdata('error', 'That email/password combination does not  exist'); 
     redirect('admin/user/login', 'refresh'); 

    } 
    } 
} else {  //defult login page 
    $this->data['subview'] = 'admin/user/login'; 
    $this->load->view('admin/_layout_modal', $this->data); 
} } 

如果您仍然面临问题,请手动调试并检查它的位置ing卡住了!

+0

您有错误!你可以编辑它吗? – Yellow 2014-09-28 19:18:37

+0

可能是,总之试着在其他情况下保持登录视图并尝试。 – Rorschach 2014-09-28 19:20:11

+0

仍然有相同的错误发生。 :( – Yellow 2014-09-28 19:21:34