0

我正在使用 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();
}
    ?>

回显“您尚未登录”。不会显示,但它正在返回 login1.html

4

3 回答 3

0

使用它,它将等待 5 秒钟,然后将重定向到login1.html.

header( 'refresh: 5; url=login1.html' );
echo '<h1>You will be re-directed in 5 seconds...</h1>';
于 2013-05-02T05:45:05.370 回答
0

我认为这是因为您正在使用header('location:login1.html'). 它立即重定向客户端。
尝试使用header( 'Refresh:2; url=login1.html' );. 它将等待x几秒钟(在这种情况下为 2),然后重定向。你可以在这里阅读更多关于它的信息。

于 2013-05-02T05:45:06.990 回答
0

您不能重定向用户,同时期望他有时间查看您发送的消息。您需要退后一步,划分流程,将其保存到变量中并在下一页上向用户展示。

有多种方法可以实现这一点,但大多数 Web 框架使用的最流行的方法是制作一个“闪存消息”,该消息仅存在于会话中,直到下一个页面重新加载,因此只向用户显示一次。

本文向您展示了如何做到这一点。如果你想使用现有的东西,谷歌上还有很多。

于 2013-05-02T05:50:45.833 回答