Php 从浏览器中删除消息文本

Php 从浏览器中删除消息文本,php,mysql,Php,Mysql,我创建了一个php脚本,查看管理员是否使用php会话登录。如果他们没有登录,脚本会将他们发送回上一页,并显示错误消息 $Message = urlencode(" Authentication Timeout: 1"); header("Location: {$_SERVER['HTTP_REFERER']}?Message=".$Message); 在main.php页面上,我有以下代码来检查$Message: <?php if(!empty($_REQUEST['Message']

我创建了一个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代码正在搜索?消息

从URL中删除文本,但仍然能够显示错误消息的最佳方法是什么

使用会话

在受保护页面上:

$_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
}
阅读flash消息。 这通常是一种存储消息会话的方法,如果在页面加载时存在该会话,则向用户显示该会话并删除该会话。 因此,即使在重新加载后,消息也不再存在

重定向前:

$_SESSION['flash'] = 'text';
echo $_SESSION['flash'];
unset($_SESSION['flash']);
重定向后:

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

当然,您应该进行一些isset验证。

使用
cookies
或其他存储方法—只需将消息存储在会话中即可。然后,在另一页上,检查会话是否已设置。如果是,则显示消息并将其从会话中删除(刷新时将不会显示)。这通常被称为“flash会话”。我试图取消设置会话变量,但当页面一次又一次地重定向回管理区域时,文本继续保留。从逻辑上讲,我认为当页面刷新时,文本会消失,每次都会发出相同的错误消息。我将时间设置为2秒只是为了测试,所以我会抛出错误,但文本不会消失。请参见此图: