如何使用一个控制器构建codeigniter登录页面和会话



嗨。我的会话有问题,我是CodeIgniter的新手,所以请耐心等待。这是我的索引函数:

function index()
{
    $username;
    $pWord; //assume these two variables has valid and correct value
    if($this->coreModel->authenticate($username, $pWord)){
        $user = $this->coreModel->authenticate($username, $pWord);
        foreach($user->result() as $key) {
                $this->session->set_userdata(array(
                                'logged_in' => TRUE,
                                'cl_UserId' => $key->cl_UserId,
                                'cl_username' => $key->cl_username,
                                'cl_roles' => $key->cl_roles));
                if($this->session->userdata('cl_roles') == 1){
                    header("Location: ".base_url()."controller/homepage");  
                } else {
                    $this->load->view('loginPage',$this->data);
                }
         }
    } else {                            
        //$this->data['msg'] = "Wrong Username/Password";
        $this->load->view('loginPage',$this->data);
    }
}
function kickIfNotInSession(){
    if ($this->session->userdata('logged_in') == FALSE)
    { 
       redirect('controller'); 
    }
}

如果我输入了一个有效的用户名和密码,它会正常工作,页面会转到主页。在我的主页上,我echoidusername。同样在我的主页上,我有一个选项卡菜单。在所有页面中,I echoidusername。我还在所有函数中添加了kickIfNotInSession((函数,例如:

function test() {
    $userid = $this->session->userdata("logged_in");
    $this->kickIfNotInSession();
    $this->load->view("test");  
}

此外,我有autoload.php:

$autoload['helper'] = array('url');
$autoload['libraries'] = array('database','session');

登录后,我点击了所有的选项卡,出于某种原因,它运行良好。它与idusername相呼应,但一两分钟后,当我单击选项卡时,它会将我踢出会话,并将我引导到登录页面。我想知道这是怎么发生的。我是不是错过了什么?

检查application/config/config.php文件中的sess_expiration参数。可能是设置不正确。

'sess_expiration'=希望会话持续的秒数。默认情况下,会话持续7200秒(两小时(。设置为零表示无过期。

听起来你的会话经验值设置得很低,几分钟后就会把你赶出去。

转到application/config/config.php,向下滚动并查找$config['sees_expiration']。这就是设置过期时间(以秒为单位(的原因。将其更改为适合您的内容,然后重试。

您也可以在此处查看CodeIgniter手册(位于页面底部(。

sess_expiration-您想要的秒数会话结束。默认值为2小时(7200秒(。如果你希望非过期会话将值设置为零:0

您应该增加会话到期时间。更改到期时间

  • 打开位于path_to_project/application/config/config.php的CI配置文件
  • 查找$config['sees_expiration']
  • 现在增加到期时间,如$config['sess_expiration']=14400

注意:会话到期时间将以秒为单位。

最新更新