Я использую CodeIgniter 2.1.0, я хочу, чтобы после вставки данных в базу данных получилось сообщение типа «Ваша информация была успешно обновлена». Для этой работы у меня есть функция CI_Controller:
function myCiInser(){ ... Here is my query ... //$data: this var is result query that is true if($data){ $this -> session -> set_flashdata('message', 'Your information was successfully updated.'); redirect('url/myurl'); } }
И я имею в виду, как:
<?php $message = $this->session->flashdata('message'); if($message){ echo '<div id="error_text">' . $message . '</div>'; } //I test this : "echo $message;" but don't give output ?>
Но я не даю сообщение, но redirect
выполняется и работает верно. и в базе данных в столбце user_data
таблицы ci_sessions
user_data
меня есть следующее:
a: 2: {s: 9: "user_data"; s: 0: ""; s: 19: "flash: new: message"; s: 42: "Ваша информация была успешно обновлена.";}
Как решить эту проблему?
ОБНОВИТЬ:
У меня была следующая ошибка (я использую из chorme и Ctrl + Shift + ji получить это предупреждение):
Не удалось загрузить ресурс: сервер ответил статусом 404 (не найден)
И я исправлю это (теперь у меня нет ошибки), но все равно та же проблема в сообщении дисплея. что я делаю?
Из документации класса Classigniter Session Class , относящейся к Flashdata, можно прочитать:
CodeIgniter поддерживает «flashdata» или данные сеанса, которые будут доступны только для следующего запроса сервера, и затем автоматически очищаются.
Ваша проблема может заключаться в том, что при перенаправлении процесс принимает более одного запроса, очищая ваши flashdata.
Чтобы убедиться, что это так, просто добавьте следующий код в конструктор контроллера, к которому вы перенаправляете:
$this->session->keep_flashdata('message');
Это сохранит данные flashdata для другого запроса сервера, что позволит использовать его впоследствии.
У меня тоже была эта проблема. Я не помню, где я видел, но вот мое решение.
redirect('url/myurl','refresh');
CodeIgniter не рассматривал перенаправление как другой запрос. Поэтому flashdata не была настроена в перенаправлении, но она была на следующей странице, которую я загрузил.
Использование сеансов с базой данных иногда вызывало у меня проблемы. Я рекомендую установить $ config ['sess_use_database'] = FALSE; в config.php и посмотрите, что flashdata работает нормально.
Вы также можете использовать базу данных для сеансов, но вы должны установить элементы конфигурации:
$config['sess_match_ip'] = FALSE; $config['sess_match_useragent'] = FALSE;
Таким образом, сессия flashdata будет работать снова
// Устанавливаем данные флэш-памяти в нашем файле контроллера
$this->session->set_flashdata('sessionkey', 'Value');
// После этого нам нужно использовать функцию перенаправления
redirect("admin/signup");
// Получение данных Flash
$this->session->flashdata('sessionkey');
За исключением одной страницы, я могу отображать / передавать значения с помощью сеанса. Я попытался использовать var_dump ($ this-> session), и я получаю ["flash: old: Array"] => bool (false) ["flash: new: message"] => string (10) "My Message"} , Я попытался повторить данные флэш-памяти на странице без перенаправления сразу после установки данных, но результат был таким же. Я рекомендую обрезать код и попытаться установить сеанс на других страницах. Если проблема не устранена. Проверьте свой var_dump. Это может быть не решение. Но я думаю, что это может помочь.
UPDATE : сокращение пробелов и новых строк в тексте. Я проходил 2 длинных предложения с пустыми разрывами строк и пробелами.
if (0)//Assume this condition is false { $this->load->view('error_page'); // Generate validation error } else { //Show success message $data = array( 'message' => 'My message' ); $this->session->set_flashdata($data); $this->session->keep_flashdata($data); echo $this->session->flashdata('message'); //echo var_dump($this->session); //redirect(base_url().'success_page'); }
У меня была та же проблема, после проверки кода, который я нашел, я называю это $ this-> session-> sess_destroy (); … что вызывает проблему.
404 (не найдено) считается 1 запросом сервера. он удалит ваши flashdata.
Поскольку я наблюдаю за codeigniter flashdata. Когда я использую его во втором запросе с использованием метода codeigniter redirect (), он отлично работает в mozila, но в случае хром он не работает.