私はcodeigniterセッションライブラリを使用して、3ページのシリーズで使用されているデータを保持しています。私のセッション変数は変わりませんが、値は消えます。見知らぬ人:セッションデータにシリアル化された配列を格納しようとしていますが、配列の最初の項目は別の変数に格納されてしまいますか?codeigniterセッションの問題 - 一部のセッション情報が固まらない
私は、次のページをクリックすることができるシリーズの最初のページから始まるリンクを添付しました。私は両方のページの上部にuser_sessionデータを印刷しました(3ページ目はまだ設定されていません)。
http://playmatics.com/nypl/site/index.php/member_area/quest/accept_quest/12
セッションは、例えば、私がログインデータを保存するためにセッションを使用していますし、それが正常に動作し、他のどこでも動作します。他の人が言ったように
私は
//CONTROLLER:
function accept_quest() {
$assoc_quest_id = end($this->uri->segments);
if(!isset($quest_id)) {
redirect('member_area/quest');
//SEND A MESSAGE: NO QUEST STARTED
}
$quest_rows = $this->quest_model->get_quest_with_images($assoc_quest_id);
$quest = current($quest_rows);
$images = $this->pull_out_images($quest_rows);
//the data array is used both in the session,
//to pass values over to the next function in the quest chain
//and in the template
$data = array();
$data['quest_id'] = $assoc_quest_id;
$data['instruction_text'] = $quest->instructions;
$data['quest_title'] = $quest->name;
$data['quest_time_limit'] = $quest->time_limit;
$data['points_awarded'] = $quest->points_availible;
$data['quest_images'] = serialize($images);
//save data in a flash session to be used in the next function call in the quest chain: quest_action
$this->session->set_userdata($data);
print_r($this->session->all_userdata());
//the following data aren't needed in the session so they are added to the data array after the session has been set
$data['annotation_text'] = $quest->note;
$data['main_content'] = 'quests/quest_desc';
$this->load->view('includes/template', $data);
}
function quest_action() {
print_r($this->session->all_userdata());
$quest_id = $this->session->userdata('quest_id');
echo "the quest id is: $quest_id";
if(!isset($quest_id)) {
redirect('member_area/quest');
//SEND A MESSAGE: NO QUEST STARTED
}
$data['quest_id'] = $quest_id;
$data['quest_title'] = $this->session->userdata('quest_title');
$data['quest_images'] = $this->session->userdata('images');
$data['instruction_text'] = $this->session->userdata('instructions');
$data['quest_time_limit'] = $this->session->userdata('quest_time_limit');
$data['main_content'] = 'quests/quest_action';
$this->load->view('includes/template', $data);
}
//VIEW
//quest_desc:
<h1><?= $quest_title ?></h1>
<div id="quest_elements">
<figure>
<? foreach(unserialize($quest_images) as $image): ?>
<img class="media" src="<?= $image ?>" alt="<?= $quest_title ?> image"/>
<? endforeach; ?>
<figcaption>annotation: <?= $annotation_text ?></figcaption>
</figure>
<?= anchor("member_area/quest/quest_action", "Start Quest", array('title' => 'start quest')); ?>
</div><!-- end quest_elements -->
//quest_action:
<h1><?= $quest_title ?></h1>
<div id="quest_elements">
<figure>
<? foreach(unserialize($quest_images) as $image): ?>
<img class="media" src="<?= $image ?>" alt="<?= $quest_title ?> image"/>
<? endforeach; ?>
<figcaption>instructions: <?= $instruction_text ?></figcaption>
</figure>
<div id="timer">
<?= $quest_time_limit; ?>
</div>
<?= anchor("#start_timer", "Start Timer", array('title' => 'start quest timer')); ?>
</div>
CIは、デフォルトでセッションを保存するためにCookieを使用します。クッキーサイズの上限に達していないと確信していますか? –
さらに、セッションデータを暗号化している場合は、データのサイズが増えていて、制限をさらに早く打っている可能性があります。 – k00k
ああ、おそらく問題です。ありがとう! – JoeM05