【发布时间】:2015-02-07 14:08:07
【问题描述】:
这是我的登录控制器代码:
public function login_validation(){
$this->load->library('form_validation');
$this->load->model('model_users');
$this->form_validation->set_rules('username', 'Username', 'required|trim|alpha_numeric|xss_clean|strip_tags');
$this->form_validation->set_rules('password', 'Password', 'required|trim|xss_clean|strip_tags');
if ($this->form_validation->run()){
if ($this->model_users->can_log_in()){
$data = array(
'username' => $this->input->post('username'),
'password' => $this->input->post('password')
);
if($this->model_users->get_status($data['username'])){
$data = array(
'username' => $this->input->post('username'),
'privilege' => 'member',
'is_logged_in' => 1,
'counter' => 1
);
$this->session->set_userdata($data);
redirect('member');
} else {
$data = array(
'username' => $this->input->post('username'),
'privilege' => 'admin',
'is_logged_in' => 1
);
$this->session->set_userdata($data);
redirect('admin');
}
} else {
$data = array(
'error' => 1,
);
$this->session->set_userdata($data);
redirect('main/login');
}
} else {
$this->login();
}
}
这是我的成员控制器代码:
public function __construct(){
parent::__construct();
$this->load->library('session');
if ($this->session->userdata('counter') == 1){
$data = array(
'sessionID' => $this->session->userdata('session_id'),
'counter' => 0
);
$this->session->set_userdata($data);
}
if ($this->session->userdata('sessionID') != $this->session->userdata('session_id')){
$this->session->sess_destroy();
} else {
echo "Error";
}
if (! $this->session->userdata('is_logged_in')){
redirect('main/restricted');
} else {
$privilege = $this->session->userdata('privilege');
if ($privilege == 'admin'){
redirect('main/restricted');
} else {
$this->session->sess_expiration = '10';
//$sessionID = $this->session->userdata('session_id');
print_r($this->session->all_userdata());
}
}
}
我正在尝试这样做,以便在某个现在之后,在此代码中,如果用户处于非活动状态 10 秒,那么他们将被注销,但是我在 20 秒后尝试了它,但会话 ID 仍然没有改变。
我认为$this->session->sess_expiration = '10'; 在等待大约 13 分钟后无法正常工作,一切正常,会话已重置,用户因不活动而退出。
但是我希望控制会话到期的时间,我能做到吗?谢谢!
【问题讨论】:
-
会话 $this->session->sess_expiration = '10';不能像那样在你的 config.php 中设置超时会话
-
哦,我明白了,所以我无法动态设置它?
标签: php codeigniter session