Hallo mede PHP-ers.

Stel een bezoeker heeft net een formulier verzonden en daarna vernieuwt hij de pagina. Als je geen controle inbouwt, worden de gegevens twee keer verzonden. Ik wil eens een elegante manier verzinnen om dat op te vangen.

Als het bijvoorbeeld gaat om het invoegen van de formuliergegevens in een db, zou je kunnen checken op dubbele records, maar misschien zijn er veel mooiere manieren. Ik ben benieuwd naar jullie gedachtes hierover?
@Jan: Het zou zo maar kunnen werken denk ik. Is misschien ook wel wat tegen spambots.
Tuurlijk werkt het ^^.
Dat idee vab jelmer ga ik ook ff testen.
Ik ga ook ff aan de gang!
Ik krijg wel het nummer er voor en het nummer daarvoor maar niet de melding :deze vraag is reeds beantwoord. Bij een page refresh blijven de nummers wel staan....
<?php

//dbcon

session_start();

$_SESSION['once'] = $_POST['eens'];

echo $_SESSION['once'];

$uniek = $_SESSION['once'];
echo "Dit is uniek 1:" . $uniek;
$uniek2 = $_POST['uniek'];
echo "Dit is uniek 2:" . $uniek2;
if($uniek==$uniek2){
echo "Deze vraag is reeds beantwoord";
}

$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = 'mysql';
$dbname = 'md342209db301970';
$dbCon=mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$ipo= "ipadres";
$iptest =$_SERVER['REMOTE_ADDR'];
$sessi= 2;

if(isset($_POST['submit'])){
$vraag = $_POST['vraag'];
$vragenInvoer="INSERT INTO test (ID, sessie, antwoord,ip)
VALUES (NULL,'$sessi', '$vraag', '$ipo')";
if (!mysqli_query($dbCon,$vragenInvoer)) {
die('Error: ' . mysqli_error($dbCon));
mysqli_close($dbCon);
}

}

?>
<form method='post' action=''>
<?php
$eens = rand(1000,9999);
echo $eens . "<br/>";
echo "<input type='hidden' name='eens' value='" . $eens . "'>";
echo "<input type='hidden' name='uniek' value='" . $uniek . "'>";
?>
<input type='radio' name='vraag' value='1'>1<br/>
<input type='radio' name='vraag' value='2'>2<br/>
<input type='radio' name='vraag' value='3'>3<br/>
<input type='submit' class='volgende' name='submit' value='antwoord'>
</form>
Topic is 9 jaar oud.

Reageren