我在嘗試爲朋友初始化代碼點火器項目時遇到了一個奇怪的問題。CI_Session在登錄時創建兩個session_id
我有一個控制器user
具有兩個功能:login
和dashboard
的login
功能:
function login()
{
if ($this->user_model->isLoggedIn())
redirect('user', 'refresh');
else
{
$this->load->library('form_validation');
$this->form_validation->set_rules('username', 'Login', 'required');
$this->form_validation->set_rules('password', 'Password', 'required');
if (!$this->form_validation->run())
$this->load->view('login');
else
{
$username = $this->input->post('username');
$password = $this->input->post('password');
$validCredentials = $this->user_model->validCredentials($username, $password);
if ($validCredentials)
redirect('user/dashboard', 'refresh');
else
{
$data['error_credentials'] = 'Wrong Username/Password';
$this->load->view('login', $data);
}
}
}
}
而dashboard
功能:
function dashboard()
{
$data = array();
$data['test'] = $this->session->all_userdata();
if($this->user_model->isLoggedIn())
$this->load->view('dashboard');
else
$this->load->view('sashboardnon', $data);
}
在登錄視圖,有一個形式poove login
函數,當我lo克,憑藉良好的憑據,我被重定向到siconnon視圖,這不是我所期望的。
這裏是我的user_model.php:
class User_model extends CI_Model
{
function User_model()
{
parent::__construct();
$this->load->library('session');
}
function validCredentials($username, $password)
{
$this->load->library('encrypt');
$password = $this->encrypt->sha1($password);
$req = "SELECT username, password FROM users WHERE username = ? AND password = ?";
$data = array($username, $password);
$req = $this->db->query($req, $data);
if ($req->num_rows() > 0)
{
$res = $req->result();
$session_data = array(
'username' => $res[0]->username,
'logged_in' => TRUE,
);
$this->session->set_userdata($session_data);
return true;
}
else
return false;
}
function isLoggedIn()
{
if ($this->session->userdata('logged_in'))
return true;
else
return false;
}
function logout()
{
$this->session->sess_destroy();
}
}
當我看着我的數據庫中ci_sessions表,我看到有兩個新項目,當我點擊登錄按鈕。一個與我剛剛從我的user_model添加的userdata,另一個沒有它。
問題是當創建數據庫中的第二個條目時,userdata中的值被刪除。所以我無法登錄。
做一個人知道問題可能來自哪裏?
感謝
爲什麼你把它作爲一個「問題」?最有可能的只是防止會話固定/劫持 – zerkms 2012-02-29 09:48:34
因爲數據庫中的第一個條目正確地有我的新用戶數據,但不是第二個。 – 2012-02-29 09:51:20
從你的問題和上面的評論中不清楚:記錄工作與否? – zerkms 2012-02-29 09:56:16