从浏览器中删除消息文本

piah890a  于 2021-06-24  发布在  Mysql
关注(0)|答案(2)|浏览(304)

我创建了一个php脚本,查看管理员是否使用php会话登录。如果他们没有登录,脚本会将他们发送回上一个页面,并显示一条错误消息。

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

在main.php页面上,我有以下代码来检查$消息:

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

但是,如果触发此事件,浏览器将显示 ?Message=TEXT 即使在被送回之后。在刷新页面之前,显示在url中的文本不会消失。我注意到的另一件事是,如果您只是在url的末尾添加?message=sometext,那么会触发该页面的消息代码,这是预期的,因为php代码正在搜索?message。
从url中删除文本,但仍然能够显示错误消息的最佳方法是什么?
在此处输入图像描述

njthzxwz

njthzxwz1#

阅读有关flash消息的信息。通常,这是一种存储消息会话的方法,如果页面加载时存在该会话,则向用户显示该会话并删除该会话。所以即使重新加载后,消息也不会再出现了。
重定向前:

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

重定向后:

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

当然你应该做一些isset验证。

qij5mzcb

qij5mzcb2#

使用会话
在受保护的页面上:

$_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
}

相关问题