Php 无法销毁codeigniter中的会话
我想要实现的是一个简单的登录页面,如果用户成功登录,则重定向到主页,否则保留登录页面 我有一个名为Php 无法销毁codeigniter中的会话,php,codeigniter,session,login,Php,Codeigniter,Session,Login,我想要实现的是一个简单的登录页面,如果用户成功登录,则重定向到主页,否则保留登录页面 我有一个名为login,的控制器和一个名为main的型号。 当用户单击登录按钮时,将调用login/login\u send <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class Login extends CI_Controller{ function __construct() {
login,
的控制器和一个名为main
的型号。
当用户单击登录按钮时,将调用login/login\u send
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Login extends CI_Controller{
function __construct() {
parent::__construct();
$this->load->model('model_login');
}
function index()
{
if ($this->model_login->is_logged_in())
{
redirect('main');
}
else
{
// load login page
$data['main'] = 'view_login';
$data['style'] = 'style_login';
$this->load->view('template', $data);
}
}
function login_send()
{
$this->form_validation->set_rules('username', 'Username', 'trim|required');
$this->form_validation->set_rules('password', 'Password', 'trim|required');
if ($this->form_validation->run() == FALSE)
{
$this->index();
}
else
{
if ( $this->model_login->validate_user() )
{
$user_session_data = array(
'username' => $this->input->post('username'),
'is_logged_in' => 1
);
$this->session->set_userdata($user_session_data);
redirect('main');
}
else
{
redirect('login');
}
}
}// end function login_send
function logout()
{
if ($this->model_login->is_logged_in())
{
$this->session->sess_destroy();
$this->session->set_userdata(array('username' => '', 'is_logged_in' => 0));
log_message('debug', 'Some variable was correctly set');
}
redirect('login','refresh');
}
}// end class Login
?>
当第一次登录,然后注销时,没有问题。但是,如果我再次登录,我将无法注销。即使正确调用了登录/注销,我也刷新了页面,但是
会话['is_logged_in']==1
。我的代码有问题吗?在应用程序/config/config.php
中尝试更改
$config['sess_time_to_update'] = 300; //This is the default setting in ver 2.1.1
到
几年前,这给了我一些问题
$This->session->sess_destroy()
应该是最后一个调用的。另外,最好只从model_登录类调用$this->session
函数。若要仅删除一个变量,请选择“取消设置用户数据”,您在Login::logout中调用“设置用户数据”,可能会发生奇怪的事情。谢谢您的回复。我已经将所有与会话相关的操作移动到model_login,并且我还向model_login添加了2个函数,它们是set_login_session(设置会话数据)和logout(取消设置会话数据)。但是,问题仍然存在:(输入错误:CI_MOdel{…应该是:CI_MOdel{…耶,我改为'MOdel',但它不起作用。我目前的解决方案是使用php$\u SESSION而不是使用CI SESSION,它起作用了。
$config['sess_time_to_update'] = 300; //This is the default setting in ver 2.1.1
$config['sess_time_to_update'] = 0;