У меня есть сеанс в моем контроллере формы, который создается сеансом, когда пользователь сохраняет сеанс, влияя на страницу формы, поэтому моя проблема:
если я загрузил страницу, не нажимая на сохранение ошибки неопределенного индекса [session index]
поэтому я создал сеанс на домашней странице, но проблема в том, что если я загрузил страницу формы, не посещая домашнюю страницу, сначала появляется неопределенная ошибка индекса. Я попытался вызвать метод session_start()
но я получил эту ошибку. Возникла ошибка PHP.
Серьезность: Уведомление: сеанс уже запущен – игнорирование session_start () Имя файла: views / Form.php Номер строки: 5
Я настоятельно рекомендую использовать библиотеку сеансов CI по умолчанию. Вы можете выполнить автозагрузку сеанса в autoload.php
. Ваша сессия запустится автоматически, нет необходимости вызывать session_start()
.
Затем замените $_SESSION['save']="true"
с помощью $this->session->set_userdata('save', 'true');
,
Я думаю, вам нужно проверить, является ли session ['save'] истинным или нет, поэтому заранее вы должны объявить по умолчанию, что сеанс ['save'] является «false» в контроллере по умолчанию, который указан в route.php, и также убедитесь, что индекс сессии ['save'] уже определен в вашем контроллере страницы формы, выполните следующие действия:
if ($this->session->userdata('save')) { // do something when exist } else { $this->session->set_userdata('save', 'false'); }
Я не уверен, почему вы пытаетесь реализовать собственное управление сеансом в CI как одном из мощных инструментов. CI предлагает гибкую, простую, но мощную систему управления сеансом.
Тем не менее, безусловно, простое решение вашей головоломки состоит в том, чтобы просто проверить, установлена ли переменная сеанса или нет в вашей форме, и если она не установлена, установите ее равным 0. В вашем контроллере вы можете иметь дело с этим , т. е. проверить, равно ли значение 0, и если да, начните сеанс и назначьте переменную сеанса или выпустите пользователя или сделайте то, что вам нужно, чтобы приложение выполнялось, когда сеанс не найден, или установлен на 0, указывающий сеанс не активирован.
Ваша сессия начнется автоматически, нет необходимости вызывать session_start () в каждом контроллере. За это отвечает библиотека сеансов codeigniter.
Сначала вам нужно загрузить библиотеку сеансов. приложение / Config / autoload.php
$this->load->library("session");
если вы уже загрузили, не нужно снова загружать.
Чтобы установить данные в сеансе
$this->session->set_userdata("KEY","VALUE");
Получение данных с сеанса
$this->session->userdata("KEY");