PHP: отображать сообщение, если оно перенаправлено из файла PHP - PullRequest
0 голосов
/ 10 февраля 2020

Я, вероятно, иду по этому пути совершенно неправильно, но вот где я нахожусь. У меня есть страница с именем adminquery. php и на ней есть форма. Когда эта форма отправляется, она вызывает файл с именем adduser. php Эта страница пытается добавить пользователя, отправленного POST, в базу данных и отправляет обратно одно из двух сообщений (добавленных или обновленных), которые должны отображаться в запросе администратора. php page.

if ($row[0] == 1)
{
    //update
    $_SESSION['errMsg'] = "user updated";
}
else
{   
    //add
    $_SESSION['errMsg'] = "user added";
}
header("Location: adminquery.php"); 
die();

adminquery. php отображает сообщение

        if(isset($_SESSION['errMsg'])){
            echo "<p>".$_SESSION['errMsg']."</p>";  
        }

Пока все хорошо. Однако, когда я перезагружаю adminquery. php или обращаюсь к нему с другой страницы, я хочу, чтобы он не отображал это сообщение _SESSION, которое больше не применимо.

Поэтому я решил проверить исходную страницу при загрузке adminquery . php и, если к нему не обращались из adduser. php Я бы очистил сообщение

    $referringSite = $_SERVER['HTTP_REFERER'];

    if (strpos($referringSite, 'adduser') == false) {
        //$_SESSION['errMsg'] = $referringSite;
        $_SESSION['errMsg'] = "";
    }

Закомментированная строка используется для проверки ссылающейся страницы и отображает запрос администратора. php как ссылающаяся страница, а не adduser. php (которая была вызвана, но не отображена). Похоже, если страница не была отображена или элемент на ней не щелкнул, чтобы снова открыть запрос администратора. php что он не распознается как ссылающаяся страница.

Есть ли какое-то более простое решение, которого я не вижу?

Ответы [ 2 ]

1 голос
/ 10 февраля 2020

Установка пустой строки не очистит переменную сеанса. Вам нужно сбросить его так:

unset($_SESSION['errMsg']);

Также вам не нужно проверять реферрера. Поскольку пользовательский сценарий устанавливает эту переменную, сценарий административного запроса может просто проверить, существует ли он, и, если это так, удалить его после отображения соответствующего сообщения.

1 голос
/ 10 февраля 2020

Вы должны сбросить эту переменную сеанса.

if(isset($_SESSION['errMsg'])){
    echo "<p>".$_SESSION['errMsg']."</p>";
    unset($_SESSION['errMsg']);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...