我在尝试为朋友初始化代码点火器项目时遇到了一个奇怪的问题。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