codeigniter session issue - some session info not sticking -
i'm using codeigniter session library hold data used in series of 3 pages , i'm experiencing strange behavior. session variables remain in tact values disapear. stranger: i'm trying store serialized array in session data , first item of array ends being stored in different variable?
i've attached link starts @ first page in series possible click next page. i've printed user_session data @ top of both pages (the third page isn't set yet).
http://playmatics.com/nypl/site/index.php/member_area/quest/accept_quest/12
sessions work everywhere else, example i'm using session store login data , works fine.
i've attached controller , view below
//controller: function accept_quest() { $assoc_quest_id = end($this->uri->segments); if(!isset($quest_id)) { redirect('member_area/quest'); //send 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 used both in session, //to pass values on next function in quest chain //and in 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 flash session used in next function call in quest chain: quest_action $this->session->set_userdata($data); print_r($this->session->all_userdata()); //the following data aren't needed in session added data array after 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 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) $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) $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>
if hitting cookie size limit, suggest switching codeigniter's native database sessions class. enables store session information in database, removing cookie size limitation, restricted size of user_data
field in ci_sessions
database.
following link above, section on utilizing database sessions near bottom, providing proper db schema , config switch database sessions.
Comments
Post a Comment