gevens blijven in POST zitten
ik ben bezig aan een heel simpel formuliertje om wat gegevens in een database te steken.
En dit werkt perfect maar net iets te goed, als ik op submit klik worden ze toegevoegd maar als ik daarna op f5 worden ze nog eens toegevoegd.
Nu dacht ik dit simpel op te lossen met nen unset maar zo simpel blijkt het niet te zijn.
Een redelijk klein maar redelijk vervelend probleem, iemand een oplossing?
Quote:
if (isset($_POST['verzonden'])){
$naam = $_POST['naam'];
$query = "INSERT INTO bbq (id,naam,inschrijving) VALUES ('','$naam',now())";
mysql_query($query, $link);
mysql_close($database);
unset($_POST['verzonden']);
//header("Location: http://www.scoutingranst.be/bbq/");
};
$naam = $_POST['naam'];
$query = "INSERT INTO bbq (id,naam,inschrijving) VALUES ('','$naam',now())";
mysql_query($query, $link);
mysql_close($database);
unset($_POST['verzonden']);
//header("Location: http://www.scoutingranst.be/bbq/");
};
Quote:
Gewijzigd op 01/01/1970 01:00:00 door Wouter
Het probleem is dat de browser herladen ziet als het opnieuw aanroepen van de pagina. Dus als je de pagina hebt aangeroepen door op 'submit' in een formuliertje te drukken, dan zal de browser als het ware weer op dat 'submit' knopje drukken. Door de redirect is de laatste stap het opvragen van een pagina in plaats van het versturen van een formuliertje waardoor F5 die aanvraag opnieuw uitvoert, en niet opnieuw het formulier verstuurt.
en die in een veld met een UNIQUE constraint opslaan.
Wat ik ook nog wel eens doe is dit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
$form_style = '';
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// alles afhandelen en als alles okee is:
$form_style = ' style="display: none;"';
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<form method="post" action="#"<?php echo $form_style; ?>>
<!--
hier je formuliervelden
-->
</form>
</body>
</html>
$form_style = '';
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// alles afhandelen en als alles okee is:
$form_style = ' style="display: none;"';
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<form method="post" action="#"<?php echo $form_style; ?>>
<!--
hier je formuliervelden
-->
</form>
</body>
</html>
dan wordt je form onzichtbaar na een geslaagde post. Dat geeft zo'n duidelijk visueel signaal dat de gebruiker niet op F5 gaat rammen.