我在PHP会话工作。用户输入他的姓名和密码,然后将其发布到一个php页面,如果凭据存在于数据库表中,则该页面启动会话,然后允许用户查看某些页面(如果有效),或者返回登录(如果无效)。数据库和会话的一切工作,除了当用户没有登录时,它应该回显"您没有登录"。然后返回登录页面。它返回到登录页面只是很好,但我没有看到消息的任何地方。谁能告诉我,如果代码的顺序是不正确的,或另一种方法来显示错误,而没有一个页面只是显示错误?
<?php
session_start();
echo '<h1>Employees Only</h1>';
if (isset($_SESSION['valid_user']))
{
if ($_SESSION['valid_user'])
{
echo "<p>You are currently logged in as " . $_SESSION['valid_user'] . "</p>";
$form = "<form action='"logout.php'" method='"post'">";
$form .= "<input type='"submit'" name='"logout'" value='"Log Out'">";
$form .= "</form>";
echo $form;
}
else
{
echo "<p>You are not logged in.</p>";
header("Location:login1.html");
exit();
}
}
else
{
echo "<p>You are not logged in.</p>";
header("Location:login1.html");
exit();
}
?>
回显"You are not logged in"。不显示,但返回到login1.html
使用此选项,它将等待5秒,之后它将重定向到login1.html
。
header( 'refresh: 5; url=login1.html' );
echo '<h1>You will be re-directed in 5 seconds...</h1>';
我认为这是因为你在使用header('location:login1.html')
。它立即重定向客户端。
尝试使用header( 'Refresh:2; url=login1.html' );
。它将等待x
秒(在本例中为2),然后重定向。你可以在这里读到更多。
您不能在重定向用户的同时期望他有时间查看您正在发送的消息。您需要退一步,划分流程,将其保存到一个变量中,并在下一页上显示给用户。
有很多方法可以做到这一点,最流行的是,大多数web框架使用的是制作一个"flash消息",它将只存在于会话中,直到下一个页面重新加载,因此只显示一次给用户。
本文向您展示了如何做到这一点。如果你想使用现有的东西,谷歌上还有很多。