提交后如何删除表单信息
How to remove form information after submit
对于一个学校项目,我需要制作一个使用数据库执行查询的网站,也称为登录系统。
登录系统完全可用,但是当用户尝试使用数据库中不存在的用户名登录时,将弹出一条警告消息,告诉用户这是不可能的。但是,之后(在第一次提交之后)每当我单击刷新页面按钮时,警报都会再次出现,而用户实际上没有提交任何表单信息。所以我知道问题出在哪里,但我只是看不到我需要在哪里取消设置()我的变量(或其他东西),但至少我需要网站在用户未提交任何内容时不显示警报.
这是代码,我希望有人能看到问题出在哪里:
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 代码在页面刷新期间运行时,它不会重复使用不再存在的信息在表格内。
编辑:
要使其正常工作,您需要使用 header
所以在您执行 POST 之后,我将用户转到另一个页面,如下所示:
header("Location: whatsuppage.php");
该页面会告诉用户表单是否正确,并据此将用户转到正确的页面。这样做会在用户切换到修复刷新
的另一个页面时删除 post 数据
工作代码如下所示:
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!";
}
}
}
}
您需要从请求中删除 POST header。在您的 index.php 中,在您的代码之后,重定向到另一个页面。例如感谢页面。
<?php
header('Location: contact-thank-you.html');
die();
?>
记住,header重定向必须在任何输出之前执行。
您不需要导航到另一个页面。我们可以用这个 javascript 代码留在这里:
clean value in $_POST and HTML input[type='text'].
$_POST['user']=$_POST['psw']=$_POST['anything']=NULL;
echo "<script>window.location.replace('/');</script>";
对于一个学校项目,我需要制作一个使用数据库执行查询的网站,也称为登录系统。
登录系统完全可用,但是当用户尝试使用数据库中不存在的用户名登录时,将弹出一条警告消息,告诉用户这是不可能的。但是,之后(在第一次提交之后)每当我单击刷新页面按钮时,警报都会再次出现,而用户实际上没有提交任何表单信息。所以我知道问题出在哪里,但我只是看不到我需要在哪里取消设置()我的变量(或其他东西),但至少我需要网站在用户未提交任何内容时不显示警报.
这是代码,我希望有人能看到问题出在哪里:
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 代码在页面刷新期间运行时,它不会重复使用不再存在的信息在表格内。
编辑:
要使其正常工作,您需要使用 header
所以在您执行 POST 之后,我将用户转到另一个页面,如下所示:
header("Location: whatsuppage.php");
该页面会告诉用户表单是否正确,并据此将用户转到正确的页面。这样做会在用户切换到修复刷新
的另一个页面时删除 post 数据工作代码如下所示:
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!";
}
}
}
}
您需要从请求中删除 POST header。在您的 index.php 中,在您的代码之后,重定向到另一个页面。例如感谢页面。
<?php
header('Location: contact-thank-you.html');
die();
?>
记住,header重定向必须在任何输出之前执行。
您不需要导航到另一个页面。我们可以用这个 javascript 代码留在这里:
clean value in $_POST and HTML input[type='text'].
$_POST['user']=$_POST['psw']=$_POST['anything']=NULL;
echo "<script>window.location.replace('/');</script>";