【发布时间】:2014-04-12 13:04:51
【问题描述】:
我在 CodeIgniter 2.1.4 的会话中遇到了一个非常奇怪的错误。我将加密会话存储到数据库中。 config.php 中的会话配置如下:
$config['sess_cookie_name'] = 'club_session';
$config['sess_expiration'] = time()+(60*60*24); //expire in one day
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie'] = TRUE;
$config['sess_use_database'] = TRUE;
$config['sess_table_name'] = 'session';
$config['sess_match_ip'] = FALSE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update'] = 300;
我也在 config.php 文件中设置了一个加密密钥。
当会员成功登录后,会执行以下会话逻辑:
$session_data = array(
'member_login_state' => TRUE,
'memberID' => $memberID
);
$this->session->set_userdata($session_data); //set member
当会员退出时:
$session_data = array(
'member_login_state' => '',
'memberID' => ''
);
$this->session->unset_userdata($session_data); //unset member
我用以下方法扩展了 CI_Controller:
public function member_is_logged_in()
{
if ($this->session->userdata('member_login_state') == FALSE)
{
redirect('member'); //redirect to member login
}
}
一旦成员登录,为成员提供授权区域的每个控制器都会扩展如下:
class Hub extends MY_Controller {
function __construct()
{
parent::__construct();
$this->member_is_logged_in(); // check member is logged in
}
//methods below.....
}
现在,如果我在未登录时访问这些扩展控制器中的任何方法,我将被重定向到登录页面。登录后,我可以在输出不同视图的几种不同方法之间导航,然后我会自动注销并重定向回登录页面。这可能随时发生,例如1 分钟、2 分钟、10 分钟。
我真的很难过,任何帮助将不胜感激
谢谢...
【问题讨论】:
-
这对我的问题没有帮助,我不想重写我的整个会话控件并添加另一个库。
标签: php codeigniter session