Здесь я сталкиваюсь со странной проблемой, пытаясь инициализировать проект воспламенителя кода для друга.
У меня есть контроллер 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);
}
В представлении входа в систему есть форма, обозначающая функцию login
, и когда я вхожу в систему с хорошими учетными данными, я перенаправляюсь в представление sashboardnon, а это не то, чего я ожидаю.
Вот мой 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 в моей базе данных, я вижу, что при нажатии кнопки входа в систему появляются две новые записи. Один с userdata, который я только что добавил из моей user_model, а другой без него.
Проблема в том, что значения в пользовательских данных стираются при создании второй записи в БД. Поэтому я не могу войти.
Кто-нибудь знает, откуда может возникнуть проблема?
Спасибо