Прежде всего я новичок в кодеригенере. Все, что я хочу спросить, это то, почему каждое обновление моих данных сеанса теряется. Я перенаправляю логин.codeigniter сеанс потерян при обновлении (F5)
Вот мой код.
контроллер Войти
<?php if (! defined('BASEPATH')) exit('No direct script access allowed');
class Login extends CI_Controller {
function __construct()
{
parent::__construct();
}
function index()
{
$this->load->helper('form');
$this->load->view('login');
}
}
?>
verifylogin
function index() {
//This method will have the credentials validation
$this->load->library('form_validation');
$this->form_validation->set_rules('username', 'Username', 'trim|required|xss_clean');
$this->form_validation->set_rules('password', 'Password', 'trim|required|xss_clean|callback_check_database');
if($this->form_validation->run() == FALSE) {
//Field validation failed. User redirected to login page
//$this->load->view('headerx');
//redirect('login', 'refresh');
$this->load->view('login');
}
else {
//Go to private area
redirect('home');
}
}
function check_database($password) {
//Field validation succeeded. Validate against database
$username = $this->input->post('username');
//query the database
$result = $this->user->login($username, $password);
if($result) {
$sess_array = array();
foreach($result as $row) {
$sess_array = array(
'id' => $row->id,
'username' => $row->username
);
$this->session->set_userdata('logged_in', $sess_array);
}
return TRUE;
}
else {
$this->form_validation->set_message('check_database', 'Invalid username or password');
return false;
}
}
?>
домашний контроллер
function index()
{
if($this->session->userdata('logged_in')) {
$session_data = $this->session->userdata('logged_in');
$data['username'] = $session_data['username'];
$this->load->view('home', $data);
}
else {
//If no session, redirect to login page
// print_r($this->session->all_userdata());
//die();
redirect('login');
}
}
первого входа в систему это успех, но когда я обновить (f5) он возвращается к форме входа. мое мнение, потому что сессия потеряна. спасибо за любую помощь ...
EDIT И РЕШИТЬ:
извините за неудобство, это проблема, потому что произойдет
<script>
function goOut(){
<?php $this->session->unset_userdata('logged_in');?>
window.location="<?php echo base_url()?>";
}
</script>
моя цель это когда нажатие кнопки выхода из системы, то сессия не установлена , но если я вхожу в заголовок, сессия снова будет потеряна, поэтому я найду другой путь. благодарю вас за внимание и помощь.
Почему, по вашему мнению, сеанс потерян? Вы проверили, что он потерян? – zerkms
Да, я уже проверял с помощью print_r ($ this-> session-> userdata ('logged_in')); в верхней части условия. сначала появляется, но когда я обновляюсь, это пусто – reefman
Не могли бы вы также опубликовать свой файл конфигурации? – thatonefreeman