1

やあ。セッションに問題があります。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. 私のホームページにもタブメニューがあります。すべてのページで、私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');

ログインした後、すべてのタブをクリックしましたが、何らかの理由で正常に動作します。idとがエコーされusernameますが、タブをクリックして 1 ~ 2 分後にセッションから追い出され、ログイン ページに移動します。どうしてそうなったのかしら。何か不足していますか?

4

3 に答える 3

2

application/config/config.php ファイルの sess_expiration パラメータを確認してください。設定が間違っている可能性があります。

'sess_expiration' = セッションを持続させたい秒数。デフォルトでは、セッションは 7200 秒 (2 時間) 続きます。有効期限なしの場合はゼロに設定します。

于 2013-05-06T13:31:06.373 に答える