我创建了一个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代码正在搜索?消息。
从网址中删除文本的最佳方法是什么,但仍然能够显示错误消息?
答案 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验证。