0

ここにセッションを設定するための私のコードがあります

$login_data = array('logged_in'=>TRUE, 'user_id'=>$userid);
$this->session->set_userdata($login_data);
redirect('dashboard');

上記のコードは、データベースの ci_session テーブルに新しいエントリを作成し、logged_in 値を持ちます

ダッシュボードコントローラーでセッションをチェックしています。以下は、ダッシュボードコントローラーの私のコードです

function __construct(){
        parent::__construct();
        $logged_in = $this->session->userdata('logged_in');
        if(!$logged_in){
            redirect("welcome");
        }
    }

上記のコンストラクター ブロックでは、logged_in の値を取得していません。

を使用してすべてのユーザーデータを印刷しようとしましvar_dump($this->session->all_userdata)たが、取得できるのは空の文字列だけです。

その理由として考えられることを教えてください。Cookie も検索しましたが、コンピューターで見つかりませんでした。以下は私の設定の詳細です

$config['sess_cookie_name']     = 'ci_session';
$config['sess_expiration']      = 7200;
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie']  = TRUE;
$config['sess_use_database']    = TRUE;
$config['sess_table_name']      = 'ci_sessions';
$config['sess_match_ip']        = TRUE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update']  = 300;
4

3 に答える 3

2

私は自分の問題を解決しました。config で Cookie 関連の変数を変更するのを忘れていました。–</p>

于 2012-08-30T12:19:40.493 に答える
0

私の最初の推測は、クラスが初期化されるとき、つまりページがロードされてセッションデータが設定される前に実行される__constructメソッドでこれを行っているということです。

$logged_in = $this->session->userdata('logged_in');
    if(!$logged_in){
        redirect("welcome");
    }

ページの先頭のメソッドに追加すると機能します。

于 2012-08-19T15:10:34.890 に答える
0

ライブラリは自動ロードされていますか? チェックconfig/autoload.php:

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

$this->load->library('session');または、クラスを使用する直前に呼び出します。

于 2012-08-19T15:44:48.837 に答える