从浏览器中删除消息文本

时间:2018-04-11 05:25:59

标签: php mysql

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

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

enter image description here

2 个答案:

答案 0 :(得分: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
}

答案 1 :(得分:0)

了解Flash消息。 它通常是一种存储消息会话的方法,如果在页面加载时该会话存在,则将其显示给用户并删除该会话。 因此,即使在重新加载后,该消息也不再存在。

重定向之前:

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

重定向后:

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

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