会话丢弃在codeigniter上的某些用户类型上

时间:2013-06-07 22:05:49

标签: php codeigniter session

我有一些非常奇怪的事情发生。我刚刚添加了另一种类型的用户,因此我可以拥有版主和管理员,这样我就可以对我的网站进行不同级别的访问。这对于用户类型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所有内容,用户值似乎在那里,但一旦重定向到最近的故事页面,会话就不复存在了。我已经以其他每个用户身份登录,并且他们使用正确的会话重定向就好了,只是那个用户中断了。

我已经测试了类型,那就是那里,我的意思是它确实可以实现该功能并重定向。我只是不再有关于用户的任何信息......我需要那个,因为那是管理员类型。

这有什么理由吗?我只是犯了一个愚蠢的错误吗?

1 个答案:

答案 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;
}