Поэтому я использую codeigniter для нашей внутренней интрасети.Видимость сеанса Codeigniter
Обычно при выполнении выбора базы данных, обновлений, удалений и т. Д. Я использую ajax и использую jquery для обновления страницы без перенаправления.
У меня есть необходимость представить форму, а не полагаться на ajax. После того, как действия базы данных были выполнены, я установил некоторые данные сеанса, используя сеансы codeigniters, затем перенаправляю пользователя обратно на страницу обзора, где он будет извлекать информацию из сеанса и отображать ее как сообщение об успешности.
Я могу установить данные просто отлично:
$this->session->set_userdata('msg_title', 'Success');
$this->session->set_userdata('msg_content', 'Some success message here');
Я также знаю, что я должен использовать flashdata
примеры, как это, но, кажется, ошибка.
Когда я устанавливаю данные, используя flashdata, или когда я пытаюсь отключить пользовательские данные с помощью unset_userdata()
, браузер зависает.
Я знаю его эти две функции, потому что когда я удаляю строки set_flashdata()
или unset_userdata()
, скрипт отлично работает.
Ошибок нет, нет записей в журнале ошибок, ничего в журнале консоли. Другие сайты на одном сервере (субдомены) работают нормально. Только когда я использовал эти функции, он, кажется, повесил браузер.
Я использую Chrome 32.0.1700.107, и я также тестировал его в IE8, который испытывает ту же проблему.
Я отправил соответствующие разделы кода ниже:
body.php - My View
<?php if($this->session->userdata('msg_reply')): ?>
<p class="big-message <?php echo $this->session->userdata('msg_colour_class'); ?>">
<strong><?php echo $this->session->userdata('msg_title'); ?></strong><br>
<?php echo $this->session->userdata('msg_message'); ?></strong>
</p>
<?php
$this->session->unset_userdata('msg_reply');
$this->session->unset_userdata('msg_colour_class');
$this->session->unset_userdata('msg_title');
$this->session->unset_userdata('msg_message');
?>
<?php endif; ?>
Мой контроллер
$this->session->set_userdata(array(
'msg_reply' => true,
'msg_colour_class' => 'green-gradient',
'msg_title' => 'Contacts Updated',
'msg_message' => 'You have successfully updated ' . $i . ' out of ' . $t . ' contacts.'
));
redirect('my_department/student_absence');
Резюме:
- Я знаю, что я должен использовать
set_flashdata()
, но эта функция вешает браузер set_userdata()
работает отлично, и создает значения в сессииunset_userdata()
вешает браузер- Там нет никаких сообщений об ошибках в любом месте.
- Удаление экземпляров
set_flashdata()
илиunset_userdata()
останавливает проблему, но также не позволяет мне установить flashdata или удалить обычные данные сеанса.
EDIT
Я AutoLoad библиотеку сеанса поэтому для каждой страницы. Кроме того, попытка сброса данных сеанса в контроллере зависает в браузере.
После ожидания загрузки страницы, я обнаружил, что работает unset_userdata()
, но он принимает возраст, чтобы что-либо сделать.
Я запустил сценарий перезагрузки 3 раза сейчас, и каждый раз для перезагрузки страницы требуется ровно 2 минуты.
К сожалению, я забыл упомянуть об этом в сообщении, я автоматически загрузил библиотеку сеансов, поскольку каждая страница использует сеансы для проверки пользователей (закрытая внутренняя интрасеть с конфиденциальной информацией). –
Ок, похоже, работает, однако для удаления данных сеанса требуется 2 минуты. Я проверил это, используя инструменты разработчика Chrome, и нажав кнопку отправки, до загрузки страницы, она занимает 2 минуты. Удаляя функцию 'unset_userdata()', страницы занимают менее 3 секунд. –
даже с уже загруженной сессией lib, $ это не имеет никакого значения, как упоминалось выше, я удивлен, что вы не получаете ошибку. В любом случае, что касается вопроса синхронизации, я бы рекомендовал управлять сессиями в контроллере в первую очередь. Вы пробовали этот маршрут? – Zarathuztra