Ik zoek een manier om de backspace toets uit te schakelen. Ik heb een formulier in php maar ik heb last van enkele spammers die als de gegevens verzonden zijn, via de backspace toets terug naar het formulier gaan voor weer op verzenden te kunnen drukken. Met backspace blijven de gegevens in de tekstvelden en hoeven ze dit niet opnieuw in te typen (ik ben hier achter gekomen via een tijd en een ip opslag in het formulier). Ik zoek een manier om als iemand op backspace of vorige klikt de ingevulde gegevens weg zijn voor dubbele posts te vermijden.
Je kunt ook een datetime veld in je tabel maken en een veld voor IP en die combinatie UNIQUE maken. Dan zijn dubbelposts onmogelijk.
Hoe bedoel je? Ik heb een veld wat de tijd opslaat en een wat het ip opslaat.
Hier mijn code:

<?php

//allestehuur

echo "<body link='blue' alink='blue' vlink='blue' text='white' bgcolor='000000'>";
echo "<title>Gastenboek</title>";

echo "<table width=100% border='0'>";
echo "<tr>";
echo "<td align='center'><font size='6' face='Tempus sans ICT, Arial, Helvetica'><b><u>Gastenboek</b></u></font><br>";
echo "</td>";
echo "</tr>";
echo "</table>";

//lettertype instellen
echo "<font face='Verdana, Arial, Helvetica'>";

//-- einde formulier alles weergeven--------------------------------------------------------------------------------------------------

//verbinding maken met localhost en instellen waar hij van moet laden
mysql_connect("localhost","gebruikersnaam","wachtwoord");
mysql_select_db("handelss_cwvdb1");

//bericht toevoegen-------------------------------------------------------------------------------------------------------
if ($_POST[verzenden])
{

//bericht posten
$naam = $_POST[naam];
$email = $_POST[email];
$bericht = $_POST[bericht];

//tijd en datum
$datum = date("j F Y");
$tijd = date("H:i:s");

$maanden = array('januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december');
$maand_vh_jaar = date("n")-1;
$maand = $maanden[$maand_vh_jaar];
$dag = date('j');
$jaar = date("Y");
$datum = $dag." ".$maand." ".$jaar;

$ip = $_SERVER['REMOTE_ADDR'];

//invoegen

$insert = "INSERT INTO gastenboek (id, datum, tijd, naam, email, bericht, ip) VALUES ('','$datum','$tijd','$naam','$email','$bericht','$ip')";
$query = mysql_query($insert) OR die(mysql_error());

//waarden in teksveld wissen
//echo "<meta http-equiv=Refresh content='1'; url='gastenboek.php'>";


//melding u bericht is toegevoegd
echo "U bericht is toegevoegd<br><br>";
echo "<a href='gastenboek.php'>terug</a><br>";

echo "<br><br>Deze site is nog altijd onder constructie, hier zal nog veel aan veranderen. Dank u voor u bezoek.";
echo "<br>&copy; Thierry Scholberg 2007. Alle rechten voorbehouden.";
}

else
{

echo "<font color='blue'>";
echo "<br>Welkom in mijn gastenboek.<br>";
echo "Hier kan u een berichtje achterlaten.<br>";
echo "SPAM wordt hier niet toegelaten<br>";
echo "Staat het bericht dat u zojuist gepost hebt er niet tussen? Neem dan contact op met de webmaster<br><br>";
echo "</font>";

$commando="SELECT * FROM `gastenboek` ORDER BY `id` DESC";
$resultaat=mysql_query($commando);

//loop voor alles weer te geven
while($array=mysql_fetch_array($resultaat)){

//mooi schematje :)
echo "<b>Datum: </b>" . $array['datum'] ." ". $array['tijd'] . "<br />";

echo "<b>Naam: </b>";
if ($array['naam'] == 'Scholberg Thierry'){
$array['naam'] = 'Scholberg Thierry (webmaster)';}

echo nl2br(htmlspecialchars($array['naam'])). "<br>";

echo "<b>E-mail: </b>";
echo nl2br(htmlspecialchars($array['email'])). "<br>";

echo "<b>Bericht: </b><br>";
if ($array['naam'] == 'Scholberg Thierry (webmaster)' and $array['email'] == '[email protected]'){
echo "<font color='blue'>".nl2br(htmlspecialchars($array['bericht']))."</font><br><br><hr><br>";}
else{
echo nl2br(htmlspecialchars($array['bericht'])). "<br><br><hr><br>";}
}

//form bericht

echo "<form method=\"post\" action=\"$PHP_SELF\" onSubmit=\"this.submit.disabled='true'\">";

echo "<table border='0'>";
echo "<tr>";
echo "<td colspan='2' align='center'><b><u>Bericht toevoegen</u></b><br><br></td>";
echo "</tr>";

echo "<tr>";
echo "<td><b>naam:</b></td>";
echo "<td><input type=\"text\" size=\"30\" name=\"naam\"><br></td>";
echo "</tr>";

echo "<tr>";
echo "<td><b>email:</b></td>";
echo "<td><input type=\"text\" size=\"30\" name=\"email\"><br></td>";
echo "</tr>";
// echo "bericht: <br><input type=\"text\" size=\"30\" name=\"ype\"><br>";

echo "<tr>";
echo "<td valign='top'><b>bericht: </b></td>";
echo "<td><textarea rows='8' name='bericht' cols='60'></textarea></td>";
echo "</tr>";

echo "<tr><td colspan='2' align='center'><input type=\"submit\" name=\"verzenden\" value=\"Verzenden\"></td></tr>";
echo "</table>";
echo "</form>";

echo "Deze site is nog altijd onder constructie, hier zal nog veel aan veranderen. Dank u voor uw bezoek.";
echo "<br>&copy; Thierry Scholberg 2007. Alle rechten voorbehouden.";

}

//lettertype afsluiting
echo "<font>";

?>
Jan bedoeld waarschijnlijk dat je een hidden field maakt waarin je de datetime van de post zet. Wanneer iemand dat dan opnieuw wil posten, en het ip en de datetime zijn hetzelfde (gegevens blijven hetzelfde na gebruik van de backspace toets) als die daarvoor, dan niet opslaan. Kan je me (beter gezegt ons) volgen?
Die methode houd maar enkele berichten tegen want een seconde is rap om.
Een IP controle heeft eglk ook niet veel nut want hij gebruikt een open proxy waardoor zijn ip adres bij elke post veranderd.

Kan ik volgende code misschien gebruiken of heeft deze geen nut in mijn formulier?

echo "<center><h2> Spam Beveiliging </h2><br />";
echo "Je kunt maar eens in de $Anti_Spam minuut een e-mail versturen!</center></body></html>";
header("refresh:3;url=".$site."");

gevonden op http://www.html-site.nl/forum/11_6170_0.html

Reageren