удаление текста сообщения из браузера

0

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

$Message = urlencode("  Authentication Timeout: 1");
header("Location: {$_SERVER['HTTP_REFERER']}?Message=".$Message);

И на странице main.php у меня есть этот код для проверки $ Message:

<?php
if(!empty($_REQUEST['Message'])){
echo "<font color='red'>".$_REQUEST['Message']."</font>";}
?>

Однако, если это событие запущено, браузер показывает ?Message=TEXT даже после его возврата. И текст, который отображается, так же как и в URL-адресе, не исчезает, пока вы не обновите страницу. Еще одна вещь, которую я заметил, заключается в том, что если вы просто добавили сообщение Message = SomeText в конец URL-адреса, тогда код сообщения запускается для этой страницы, что ожидается, потому что PHP-код ищет сообщение "Message".

Каким будет наилучший подход для удаления текста из URL-адреса, но все же может отображать сообщение об ошибке?

введите описание изображения здесь

  • 0
    Используйте cookies или другое хранилище
  • 0
    Просто сохраните сообщение в сеансе. Затем на другой странице проверьте, установлен ли этот сеанс. Если это так, покажите сообщение и удалите его из сеанса (тогда оно не будет отображаться при обновлении). Это обычно называется «флэш-сессией».
Теги:

2 ответа

1

Использовать сеансы

на защищенной странице:

$_SESSION['response'] = 'authentification failed';   // set message in a session
header('Location: '.$home);                          // Redirect to homepage
die;                                                 // stop executing the script

на странице по умолчанию:

if(isset($_SESSION['response'])){                    // check if session set
 echo $_SESSION['response'];                         // output Content of session
 unset($_SESSION['response']);                       // delete session
}
  • 0
    Я пытался сбросить переменную сеанса, но когда страница перенаправляется обратно в область администратора, снова и снова, текст продолжает оставаться. Логично, что я думаю, что когда страница обновляется, этот текст исчезает и каждый раз выдает одно и то же сообщение об ошибке. Я установил время на 2 секунды только для проверки, поэтому выкидываю ошибку, но текст не исчезает. Посмотрите это изображение: i.stack.imgur.com/R2ZPm.png
0

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

Перед перенаправлением:

$_SESSION['flash'] = 'text';

После перенаправления:

echo $_SESSION['flash'];
unset($_SESSION['flash']);

Конечно, вы должны сделать некоторую проверку.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню