0

次のようなコントローラー関数でセッションを設定します

$search = array(
    'search_count' => count($data['result']),
    'projectInfo' => $data['result']
    );

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

$data['result'] は配列です。

しかし、同じコントローラーの他の関数でこの変数にアクセスしようとすると、何も表示されません:

print_r($this->session->userdata('projectInfo'));

ただし、使用print_r($this->session->userdata('search_count'));すると正しい値が表示されます。

またprint_r($this->session->all_userdata());、同じコントローラーの 2 番目の関数で使用すると、最初の関数で既に設定した配列値のインデックスが表示されません

 Array
(
    [session_id] => 4adf3a42ee64ffca2b2f273cb293a10a
    [ip_address] => 127.0.0.1
    [user_agent] => Mozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20100101 Firefox/15.0.1
    [last_activity] => 1347689522
    [user_data] => 
)
4

2 に答える 2

0

ありがとうネイティブPHPセッションクラスを追加しました

于 2012-10-01T06:17:08.737 に答える
0

私が正しければ、配列を最初にシリアル化せずにセッションに保存することはできません。

$search = array(
    'search_count' => count($data['result']),
    'projectInfo' => $data['result']
    );

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

なる:

$search = array(
    'search_count' => count($data['result']),
    'projectInfo' => serialize($data['result'])
    );

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

配列を取得する場合は、次のようにします。

$data = unserialize($this->session->userdata('projectInfo'));
print_r($data);

セッションに大量のデータを設定する場合は、データベースを使用してセッションを保存する必要があることに注意してください。

config.php

$config['sess_use_database']    = TRUE;
于 2012-09-15T11:42:11.537 に答える