CodeIgniter — флэш-сессия, удаляющая всю сессию

#php #codeigniter

#php #codeigniter

Вопрос:

Я использую флэш-данные для сообщений об успехах / ошибках.

У меня возникла проблема: после установки flashdata — все данные сеанса удаляются, но только в нескольких контроллерах, в других контроллерах они работают правильно.

Cotroller 1: (функция, когда она работает нормально)

 public function vymazat($id)
    {
        if(!is_numeric($id)) redirect();

        $this->admin_model->delete_coupon($id);
        $this->session->set_flashdata('success', 'Kupón bol úspešne vymazaný');
        redirect('admin/kupony/zobrazit');

    }
 

Контроллер 2: (функция, в которой она не работает)

 public function vymazat($id)
{
    if(!is_numeric($id)) redirect();

    $this->admin_model->delete_order($id);
    $this->session->set_flashdata('success', 'Kupón bol pridaný');
    redirect('admin/objednavky/zobrazit');

}
 

Спасибо за любую помощь

Комментарии:

1. прокомментируйте перенаправление в обоих случаях и поместите это print_r($this->session->userdata()); и опубликуйте результаты.

2. Проблема решена, проблема была в кодировке документа. Мне пришлось использовать UTF8

Ответ №1:

Из документации CodeIgniter:

CodeIgniter поддерживает «flashdata», или данные сеанса, которые будут доступны только для следующего запроса сервера, а затем автоматически удаляются.

Возможно, ваше перенаправление может потребовать более одного запроса, что приведет к очистке вашего flashdata .

Вы можете использовать следующее:

 //In your Redirected to, controller constructor
$this->session->keep_flashdata('message');
 

И посмотрите flashdata , отображается ли, если да, то мое приведенное выше утверждение верно.