Сообщение $ _SESSION сбрасывается после отправки header () - PullRequest
0 голосов
/ 16 февраля 2019

решено | ОБНОВЛЕНИЕ: Поскольку не было так легко найти решение, я выкладываю ответ ниже.Надеюсь, это поможет другим найти решение для более простого стека.

У меня есть свои функции для установки и отображения сообщений.Эти сообщения хранятся в сессии.Я хочу показать сообщение только один раз после отправки формы.И это работает, если я не использую функцию header () для перезагрузки страницы или перенаправления на другую страницу.

Я использую ob_start() и session_start() в верхней части моего заголовка.Итак, эти двое присутствуют постоянно.

Мое сообщение настраивается с помощью функции ниже.Он создает сообщение об успешном или опасном типе и сохраняет его в переменной сеанса.

protected function setMsg($text, $type) {
        if($type == 1) {
            $_SESSION["message"] = '<div class="alert green"><p>'.$text.'</p></div>';
        } elseif($type == 0) {
            $_SESSION["message"] = '<div class="alert red"><p>'.$text.'</p></div>';
        }
    }

Другая функция показывает сообщение только один раз, после чего оно сбрасывается.

public function showMsg() {
        if(isset($_SESSION["message"]) && !empty($_SESSION["message"])) {
            echo $_SESSION["message"];
            unset($_SESSION["message"]);
        }
    }

Ивот последняя часть кода отправки моей формы:

$this->setMsg("User has been created", 1);
header("Location: users_list.php");

Если я не использую функцию header(), тогда все в порядке.Но я должен его использовать.

Функция сообщения вызывается в заголовке, но ниже всех других функций:

<?php $data->showMsg(); ?>

Итак, кажется, что страница каким-то образом перенаправляется дважды.После первого раза сообщение сбрасывается, а после второго обновления я просто не вижу его.Так что я вообще этого не вижу.

Что с большей вероятностью я делаю неправильно?

1 Ответ

0 голосов
/ 16 февраля 2019

Наконец я понял это.В данном конкретном случае мне просто нужно вставить exit() сразу после вызова функции header().И это все.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...