Я создал простую систему входа в систему и использовал сеансы CI для хранения некоторых значений.
Но сеансы CI работали не так, как ожидалось, он не извлекал никакого значения.
Я пытался отследить проблемуи я кое-что выяснил:
Всякий раз, когда я обновляю страницу, создается новый сеанс!
И только 1 сеанс содержит мои пользовательские переменные (is_logged
, username
).
Другие сеансы просто удерживаютданные по умолчанию.
Я попытался сохранить сеансы в базе данных, но проблема все еще та же.
Это мой ключ шифрования?
Я просто использовал несколько случайных букв, потому что не могу оставить их пустыми.
Это контроллер, на котором я тестировал свои сеансы.
Примечание:
Я использую некоторые echo
здесь, просто для тестирования.
Примечание2:
Я могу получить переменные сеансатолько если я позвоню на той же странице.
<?php
class site extends CI_Controller {
function index() {
if (!$this->session->userdata('is_logged')) {
$data['main_content'] = 'site_view';
$this->load->view('template/all_templates', $data);
} else {
echo 'you\'re logged already';
}
}
function login() {
if (!$this->session->userdata('is_logged')) {
$username = $this->input->post('username');
$password = $this->input->post('password');
if ($username && $password) {
if ($this->site_model->validate($username, $password)) {
$user_data = array('username' => $username, 'is_logged' => TRUE);
$this->session->set_userdata($user_data);
echo 'you successfully log in.';
redirect('site/index', 'refresh');
} else {
echo 'cannot login';
}
} else {
echo 'username and/or password not set';
}
} else {
echo 'you\'re logged in already!';
}
}
}
?>
Примечание:
Этот вопрос относится к этому вопросу
Edit1:
Я входил в систему несколько раз, иногда без ошибок.
После нескольких обновлений /входы, см. базу данных sesssion:
02d6e3521046ffe7df36b07e88624a60 127.0.0.1 Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.2 (K 1323803371
66a9cf3d6b7e0521dcc7e5bd3d5d4ad1 127.0.0.1 Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.2 (K 1323803380
923a78db029ee3e3ae4bf9e09873fcae 127.0.0.1 Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.2 (K 1323803366 a:3:{s:9:"user_data";s:0:"";s:8:"username";s:4:"aziz";s:9:"is_logged";b:1;}
99ac075792b7818aadac60d00ca46947 127.0.0.1 Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.2 (K 1323803367
bbe10f3338226c8d83b0ae58d1ca5149 127.0.0.1 Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.2 (K 1323803343 a:3:{s:9:"user_data";s:0:"";s:8:"username";s:4:"aziz";s:9:"is_logged";b:1;}
ed6a22ae1d2fd21b6ef66668c2078a11 127.0.0.1 Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.2 (K 1323803375
feb5806176dc8a4f7ed8f30763f65f8b 127.0.0.1 Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.2 (K 1323803380 a:3:{s:9:"user_data";s:0:"";s:8:"username";s:4:"aziz";s:9:"is_logged";b:1;}
Как вы можете заметить, некоторые результаты с данными пользователя.
моя функция проверки:
function validate($username, $password) {
$this->db->where('username', $username);
$this->db->where('password', $password);
$query = $this->db->get('users');
if ($query->num_rows() == 1) {
return true;
} else {
return false;
}
}
Примечание:
Я тестировал в FF & Chrome.