0

実行中のプロジェクトでセッション関連の問題に直面しています。そこで、新しいコピーを取り、単純なコードでセッションをチェックすることを考えました。そこで、Codeigniter 2.1.3 の新しいコピーをダウンロードし、自動ロードでセッション ライブラリを追加しました。また、構成ファイルに5桁の暗号化キーを設定しました。次に、ウェルカム コントローラーで次の 2 つのメソッドを作成しました。

public function gettingSess() {
    echo '<pre>';
    print_r($this->session->all_userdata());
    echo '</pre>';
    exit;
}

public function settingSess() {
    $arr = array('start' => '456');
    for($i=0;$i <= 999;$i++) {
        $arr['lets_test' . $i] = $i * 100;
    }
    $this->session->set_userdata('sessVar', $arr);
    echo '<pre>';
    print_r($this->session->all_userdata());
    echo '</pre>';
    exit;
}

次に、最初にhttp://mydomain.com/ci/index.php/welcome/settingSessを実行すると、その出力は次のようになり、完璧です。

    Array (
    [session_id] => dd0a684ab53e937309ee9fdbcf24468f
    [ip_address] => 127.0.0.1
    [user_agent] => Mozilla/5.0 (Windows NT 6.1; rv:21.0) Gecko/20100101 Firefox/21.0
    [last_activity] => 1371458835
    [user_data] => 
    [sessVar] => Array
        (
            [start] => 456
            [lets_test0] => 0
            [lets_test1] => 100
            .
            .
            [lets_test999] => 99900
        )

)

次に、http://mydomain.com/ci/index.php/welcome/gettingSessを実行すると、その出力は次のようになります。

Array(
[session_id] => dd0a684ab53e937309ee9fdbcf24468f
[ip_address] => 127.0.0.1
[user_agent] => Mozilla/5.0 (Windows NT 6.1; rv:21.0) Gecko/20100101 Firefox/21.0
[last_activity] => 1371458835
[user_data] => 

)

私が間違っていることと問題は何か、getsess メソッドでセッション変数を取得できない理由を教えてください。

ありがとう。

4

4 に答える 4

0

これを試して:

 $this->session->set_userdata($arr);

set_userdata'key'、'value' タイプの場合、2 つの要素のみを受け入れます。2 番目の要素は文字列 (配列ではない) である必要があります。たとえば、マニュアル$this->session->set_userdata('some_name', 'some_value');を参照してください。

于 2013-06-17T11:37:19.150 に答える