Добрый день! Уже который час пытаюсь решить следующую задачу. Обрабатываю форму. Если есть ошибки записываю в $_SESSION['error_form'] текст с ошибкой, если все удалось, то записываю $_SESSION['success_form'] текст, что все хорошо обработано. Далее делаю редирект на страницу с формой. Проверяю, есть ли сессия, которая отвечает за обработку форм, если да вывожу ошибку\успех. После вывода ошибки\текста, я хочу удалить эти сессии. И в итоге Сессии совсем пропадают эти, как будто и не приходили. Кто подскажет? Укорочу код: Страница cabinet.php, на которой форма и проверка сессии PHP: if (isset($_SESSION['success_form']) and !isset($_SESSION['error_form'])){ echo $_SESSION['success_form']; unset($_SESSION['success_form']); } else{ echo $_SESSION['error_form']; unset($_SESSION['error_form']); } <form class="login-form" action="/cabinet/edit" method="POST"> <input name="name" type="text" <? echo $name; ?> required> <input name="email" type="email" <? echo $email; ?> required> <input name="phone" type="phone" <? echo $phone; ?> required> <input type="submit" name="submit" class="btn btn-default" value="Сохранить" /> </form> файл с обработкой cabinet/edit.php PHP: $_SESSION['error_form']=false; if (!User::checkName($name)) { $_SESSION['error_form']='Имя не должно быть короче 2-х символов'; } if (!User::checkPhone($phone)) { $_SESSION['error_form']='Номер телефона должен состоять только из цифр (без "+" и других символов)'; } if (!User::checkEmail($email)) { $_SESSION['error_form']='Укажите верный E-mail адрес!'; } if ($_SESSION['error_form']== false) { $result = User::edit($userId, $name, $password, $phone, $email, $email_old); $_SESSION['success_form']='Данные успешно изменены!'; } header("Location: /cabinet"); Если не удалять Сессии, то все работает прекрасно- результат показывает верно, но мне нужно удалить сессии после того, как они вывелись.
Сайт построен по MVC, все запросы проходят через Index.php, в корне сайта который, там стартуют сессии
делал, если не удалять после вывода сессии, то в дампе есть эти сессия, если вставляю функцию удаления сессии, то в дампе она даже не приходит.
Да, если я не удаляю ее, то проверка всех сессии проходит отлично и выводит нужную информацию. Как только я unset($_SESSION['что-то-там']);, то сессии как будто и не приходят на страницу.
ну а var_dump($_COOKIE) делали? Там должен быть идентификатор сессии. Этот session_id не должен меняться между различными запросами. Если он есть, и не меняется, значит браузер честно его посылает и проблема на стороне сервера