Я использую следующий код для управления разбиением на страницы в результатах поиска:
if ($this->input->post('search-notes') && (is_string($this->input->post('search-notes')) || is_string($this->input->post('search-notes')))): $this->session->set_flashdata('search-notes', $_POST['search-notes']); $post['search-notes'] = $this->input->post('search-notes'); elseif ($this->session->flashdata('search-notes')): $this->session->set_flashdata('search-notes', $this->session->flashdata('search-notes')); $post['search-notes'] = $this->session->flashdata('search-notes'); endif; if (isset($post['search-notes']) && is_string($post['search-notes']) && !empty($post['search-notes'])): ...   Все это отлично работает на моем компьютере разработки, но задыхается на веб-сайте;  конечный оператор if() не оценивает значение true. 
  Однако, если я выхожу из переменной $post['search-notes'] до или в финальной инструкции if() , она работает! 
Это совершенно странно, и я никогда раньше не встречал ничего подобного.
Я использую CodeIgniter 2.0
  На стороне примечание, исходное название имело гораздо большую специфику: «Проблема с set_flashdata() в CodeIgniter».  Но из-за каких-то возбудимых и чрезмерных правил умеренности мне пришлось окутать его в нечто менее значимое. 
  Первое, что вы должны посетить, – это когда вы вызываете $this->session->flashdata('search-notes') , он отключает элемент 'search-notes' из сеанса. 
  Итак, когда вы проверяете $this->session->flashdata('search-notes') во второй раз, 'search-notes' больше не будут существовать. 
  Если вы хотите сохранить элемент в сеансе, используйте set_userdata() и userdata() . 
  Кроме того, вы можете использовать keep_flashdata('search-notes') после set_flashdata() или перед первым вызовом flashdata() чтобы сохранить переменную flashdata с помощью дополнительного запроса. 
  В качестве побочного пункта: 
  Нет необходимости проверять isset() и !empty() вместе.  empty() НЕ генерирует предупреждение, если переменная не существует и возвращает FALSE . 
Ссылка на CI
Также есть полезный учебник по nettuts +.
  Jus как демо: 
  НЕ копируйте, проверьте логику. 
 if ($_POST['search-notes'] AND is_string($_POST['search-notes'])) { $post['search-notes'] = $this->input->post('search-notes'/*, TRUE*/ /* Enable XSS filtering */); $this->session->set_flashdata('search-notes', $post['search-notes']); } elseif ($searchNotes = $this->session->flashdata('search-notes')) { $post['search-notes'] = $searchNotes; } if (! empty($post['search-notes']) AND is_string($post['search-notes'])): // ... 
  Если вам нужно сохранить элемент search-notes в сеансе, используйте следующее в первом if : 
 if ($_POST['search-notes'] AND is_string($_POST['search-notes'])) { $post['search-notes'] = $this->input->post('search-notes'/*, TRUE*/ /* Enable XSS filtering */); $this->session->set_flashdata('search-notes', $post['search-notes']); // Keep the flashdata through an additional request $this->session->keep_flashdata('search-notes'); } // ...