Hallo,
Ik heb een gastenboek op mijn site en in principe doet hij het, alleen bij het verversen van de pagina maakt hij weer een record in de database erbij. Hij gebruikt hierbij de laatst gebruikte gegevens. Ik kom er niet uit, wie helpt mij?

<form method="post" action="<?php echo($_server["PHP_SELF"]);?>" >
<font color = "996699" size = 3 face = verdana> Naam :</TD><TD> <input type="text" name="naam"><br></TD></TR>
<TR><TD>
<font color = "996699" size = 3 face = verdana> E-mail : </TD><TD> <input type="email" name="email"><br></TD></TR>
<TR><TD valign = "TOP">
<font color = "996699" size = 3 face = verdana> Bericht : </TD><TD><textarea name="commentaar" ROWS=6 COLS=50></textarea>
<br><br></TD></TR>
<TR><TD colspan = 2 align ="right">
<input type="submit" name="submit" value="Verzenden"></TD></TR>
</TABLE>


<?php
if(!empty($_post["submit"])){
include ("serverdata.php");

/* Make connection to database */
$db = mysql_connect($hostname, $username, $password) OR DIE("Unable to connect to database");

/* Select the database to be processed */
@mysql_select_db( "$dbName") or die( "Unable to select database");

$naam = $_POST["naam"];
$email = $_POST["email"];
$commentaar = $_POST["commentaar"];





$date=date("y-m-d");
$sql="INSERT INTO impression (naam, email, datum, commentaar) VALUES ('$naam', '$email', '$date', '$commentaar')";
mysql_query($sql, $db);
}

?>
<p>

<?php
include ("serverdata.php");

/* Make connection to database */
$db = mysql_connect($hostname, $username, $password) OR DIE("Unable to connect to database");

/* Select the database to be processed */
@mysql_select_db( "$dbName") or die( "Unable to select database");

$db = mysql_connect($hostname, $username, $password) OR DIE("Unable to connect to database");
$sql="SELECT * FROM impression ORDER BY ID DESC";
$res=mysql_query($sql, $db);

while ($ligne = mysql_fetch_object ($res))
{
print "<TABLE width = 80% border = 1 align = CENTER>";

print "<tr>";
print "<td width = 100 valign = top><font size = 2 color = 996699 face = verdana> Datum:br> $ligne->datum</td>";
print "<td rowspan = 3 valign = top> <font face = verdana size = 2>$ligne->commentaar</td></TR>";
print "<TR><td valign = top><font size = 2 color = 996699 face = verdana> Naam: <br> $ligne->naam </td></TR>";
print "<TR><td valign = top><font size = 3 color = 996699 face = verdana> E-mail:<br> $ligne->email </td>";

print "</tr>";
print "</TABLE>";
print "<p>";
}
mysql_free_result ($res);
mysql_close( $db);

?>
Bij verversen (met refresh of F5) wordt het from nogmaals gepost.
je kan het oplossen met sessions of met een cookies; zelf raad ik aan met een session te starten:

nadat je de gegevens in de db hebt gezet maak je de sessie aan. in deze variabele zet je de tijd:

helemaal vanboven in jepagina zet je:

<?php
session_start();
?>

dan nadat je de recrods in je db hebt gezet plaats je:

<?php
$_SESSION['postmoment'] = time();
?>

dan verander je deze lijn:

<?php
if(!empty($_POST["submit"])){
?>

in de volgende lijnen:
<?php
// aantal minuten hieronder weergeven:
$aantal_minuten = 5;

//hier afblijven:
$aantal_seconden = $aantal_minuten * 60;
$tijd_verstreken = time() - $_SESSION['postmoment'];
$check = ($tijd_verstreken < $aantal_seconden) ? false : true;
if($check && !empty($_POST["submit"])){
//de rest van de code
} else {
die("U kan niet zo snel na elkaar posten of u bent hier gekomen door niet op de submit-knop te drukken!");
}
?>

niet getest dus er kan wel een foutje inzitten ;)
mvg
Bedankt, hij werkt!

Reageren