如何在提交后删除表单信息

问题描述 投票:0回答:1

对于学校项目,我需要建立一个使用数据库来执行查询(即登录系统)的网站。

登录系统完全有效,但是当用户例如尝试使用数据库中不存在的用户名登录时,将弹出警告消息,告知用户不可能。但是,在此之后(所以在第一次提交之后)每当我单击刷新页面按钮时,警报将再次出现,而用户实际上没有提交任何表单信息。所以我知道问题是什么,但我只是没有看到我需要取消设置()我的变量(或其他东西),但至少我需要网站如果用户没有提交任何东西就不显示警报。

这是代码,我希望有人看到问题所在:

PHP代码:

<?php
    session_start();
    if (!isset($_SESSION["username"])) {
        $_SESSION["username"]= "No User";
    }
    if(isset($_POST["reg"]))
    {
        $ingevoerdgebruikersnaam = $_POST ["leerlingid"];
        $ingevoerdwachtwoord = $_POST ["wachtwoord"];

        if (!$db = mysql_connect ('localhost', 'havo5groep2', 'TpWsj7WG'))
        {
            $boodschap = "not ok";
        }
        else
        {
            $boodschap = "<script language='javascript'> alert('Gebruiker succesvol geregistreerd.')</script>";
            $database = mysql_select_db("havo5groep2");
            if (!$resultaat = mysql_query (" SELECT leerlingid, wachtwoord FROM po WHERE leerlingid = '$ingevoerdgebruikersnaam'", $db))
            {
                echo " Het lukte niet om de query uit te voeren";
            }
            else
            {
                if (mysql_num_rows($resultaat) == 0)
                {
                    $resultaat = mysql_query ("INSERT INTO po (`leerlingid`, `wachtwoord`) VALUES ('$ingevoerdgebruikersnaam', '$ingevoerdwachtwoord')", $db);
                }
                else
                {
                    $boodschap = "Deze gebruikersnaam is al in gebruik.";
                }
            }
        }
        echo $boodschap;
    }
    else
    {
        if(isset($_POST["login"]))
        {
            $ingevoerdgebruikersnaam = $_POST ["leerling"];
            $ingevoerdwachtwoord = $_POST ["ww"];

            if (!$db = mysql_connect ('localhost', 'havo5groep2', 'TpWsj7WG'))
            {
                $boodschap = "not ok";
            }
            else
            {
                $boodschap = "ok";

                $database = mysql_select_db("havo5groep2");
                if (!$resultaat = mysql_query (" SELECT leerlingid, wachtwoord FROM po WHERE leerlingid = '$ingevoerdgebruikersnaam'", $db))
                {
                    echo " Het lukte niet om de query uit te voeren";
                }
                else
                {
                    if (mysql_num_rows($resultaat) == 0)
                    {
                        //echo "De gebruikersnaam $ingevoerdgebruiker is niet bekend !";
                        echo "<script>    alert('De ingevoerde gebruikersnaam is niet bekend!')</script>";
                    }
                    else
                    {
                        while (list($opgehaaldgebruikersnaam, $opgehaaldwachtwoord) =
                                       mysql_fetch_row($resultaat))
                        {
                            if ($ingevoerdwachtwoord == $opgehaaldwachtwoord)
                            {
                                $_SESSION["username"]= $ingevoerdgebruikersnaam;
                                header("Location: userpage.php");
                                //echo "Inloggen voor gebruiker $ingevoerdgebruiker is gelukt!";
                            }
                            else
                            {
                                //echo "Wachtwoord $ingevoerdWachtwoord bij gebruiker $ingevoerdgebruiker niet correct";
                                echo "<script>    alert('Wachtwoord is incorrect!')</script>";
                            }
                        }
                    }
                }
            }
        }
    }

我的表单HTML代码:

<form action="index.php" method="post">
    <input type= "text" name="leerlingid" placeholder="Username" required>
    <input type= "password" name="wachtwoord" placeholder="Password" required>
    <input type="submit" name="reg" value="Register">
</form>

<form action="index.php" method="post">
    <input type= "text" name="leerling" placeholder="Username" required>
    <input type= "password" name="ww" placeholder="Password" required>
    <input type="submit" name="login" value="Login">

因此,基本上需要清空推送到PHP变量中的信息,以便在页面刷新期间运行PHP代码时,它不会重用不再在表单内部的信息。

编辑:

要使其正常工作,您需要使用标头

因此,在执行POST后,我将用户发送到另一个页面,如下所示:

header("Location: whatsuppage.php");

该页面将告诉用户表单是否正确并基于此将用户发送到正确的页面。执行此操作将删除帖子数据,因为用户切换到修复刷新的另一个页面

工作代码看起来像这样:

if (!$resultaat = mysql_query (" SELECT gebruikersid, wachtwoord, werknemer FROM gebruikersdatabase WHERE gebruikersid = '$ingevoerdgebruikersnaam'", $db))
{
    echo " Het lukte niet om de query uit te voeren";
}
else
{
    if (mysql_num_rows($resultaat) == 0)
    {
        $_SESSION["whatsup"] = 2;
        header("Location: whatsuppage.php");
        // Empty result table
    }
    else
    {
        while (list($opgehaaldgebruikersnaam, $opgehaaldwachtwoord, $werknemer) = mysql_fetch_row($resultaat))
        {
            if ($ingevoerdwachtwoord == $opgehaaldwachtwoord)
            {
                $_SESSION["username"]= $ingevoerdgebruikersnaam;
                $_SESSION["werknemer"] = $werknemer;
                header("Location: userpage.php");
                // Send to header location after the post is done
            }
            else
            {
                //echo "Wachtwoord $ingevoerdWachtwoord bij gebruiker $ingevoerdgebruiker niet correct";
                $_SESSION["whatsup"] = 3;
                header("Location: whatsuppage.php");
                //echo "Wachtwoord is incorrect!";
            }
        }
    }
}
php html login
1个回答
2
投票

您需要从请求中删除POST标头。在index.php中,在代码之后,重定向到另一个页面。以谢谢页面为例。

<?php
header('Location: contact-thank-you.html');
die();
?>

请记住,必须在任何输出之前执行标题重定向。

© www.soinside.com 2019 - 2024. All rights reserved.