我有一些非常奇怪的事情发生。我刚刚添加了另一种类型的用户,因此我可以拥有版主和管理员,这样我就可以对我的网站进行不同级别的访问。这对于用户类型1,2,禁用和拒绝正常工作。但是,只要我添加了3种类型,会话似乎就会消失。
这是我正在进行的代码。
$loginObject = array('email' => $this->input->post('email'),
'password' => md5($salt.$this->input->post('password')));
$login = $this->users_model->checkUser($loginObject);
if($login == true){
$currentUser = $login;
$this->session->set_userdata('currentUser', $currentUser);
$this->session->set_userdata('loggedin', true);
$this->user = $this->session->userdata('currentUser');
$type = $this->users_model->getUser($this->user->user_id);
if($type[0]->type == 1){
redirect('story/viewStories/'.$this->user->pen_name);
}else if($type[0]->type == 2) {
redirect('subMenu/recentStories');
}else if($type[0]->type == 3){
/* This is where the sessions seem to drop */
redirect('subMenu/recentStories');
}else if($type[0]->type == 'banned'){
$this->session->sess_destroy();
redirect('/banned/');
}elseif ($type[0]->type == 'deactive') {
redirect('/home');
}
}else{
redirect('/home/errorPage');
}
我有var_dumpted所有内容,用户值似乎在那里,但一旦重定向到最近的故事页面,会话就不复存在了。我已经以其他每个用户身份登录,并且他们使用正确的会话重定向就好了,只是那个用户中断了。
我已经测试了类型,那就是那里,我的意思是它确实可以实现该功能并重定向。我只是不再有关于用户的任何信息......我需要那个,因为那是管理员类型。
这有什么理由吗?我只是犯了一个愚蠢的错误吗?
答案 0 :(得分:1)
检查控制器类中的构造函数,如果正在扩展,还要检查父构造函数。
使用此快速代码段转储您的会话变量:
$a = $this->session->all_userdata();
foreach ($a as $key => $value) {
echo ("{$key} : {$value}<br>\n");
}
还尝试使用switch语句而不是其他许多ifs
switch ($type[0]->type) {
case 1:
redirect('story/viewStories/'.$this->user->pen_name);
break;
case 2:
redirect('subMenu/recentStories');
break;
case 3:
redirect('subMenu/recentStories');
break;
case 'banned':
$this->session->sess_destroy();
redirect('/banned/');
break;
case 'deactive': // deactivate
redirect('/home');
break;
}