php mail form overnieuw versturen

Status
Niet open voor verdere reacties.

gordonh

Gebruiker
Lid geworden
11 nov 2010
Berichten
61
Hallo helpmij forum :)

Ik ben bezig met een contact formulier voor op mijn website maar als je het bericht hebt verstuurd en je drukt op F5 word het overnieuw verstuurd, wat het mogelijk maakt om flink te spammen.
Hoe zou ik dit kunnen voorkomen?
PHP:
<?php
function spamcheck($field)
  {
  //filter_var() sanitizes the e-mail
  //address using FILTER_SANITIZE_EMAIL
  $field=filter_var($field, FILTER_SANITIZE_EMAIL);

  //filter_var() validates the e-mail
  //address using FILTER_VALIDATE_EMAIL
  if(filter_var($field, FILTER_VALIDATE_EMAIL))
    {
    return TRUE;
    }
  else
    {
    return FALSE;
    }
  }

if (isset($_REQUEST['email']))
  {//if "email" is filled out, proceed

  //check if the email address is invalid
  $mailcheck = spamcheck($_REQUEST['email']);
  if ($mailcheck==FALSE)
    {
    echo "Er zit een fout in het bericht.";
    }
  else
    {//send email
    $email = $_REQUEST['email'] ;
    $subject = $_REQUEST['subject'] ;
    $message = $_REQUEST['message'] ;
	$system = $_REQUEST['system'] ;
	$geheugen = $_REQUEST['geheugen'] ;
    mail("mijnmail@mail.nl", "onderwerp: $subject",
    $message . " 
Besturingssysteem: " . $system . " 
Geheugen: " . $geheugen, "van: $email" );
	echo "Uw bericht is verzonden, ik zal zo snel mogelijk een reactie sturen.";
    }
  }
else
  {//if "email" is not filled out, display the form
  echo "<form method='post' action='contact13.php'>
  Email: <br /><input name='email' type='text' /><br />
  Onderwerp: <br /><input name='subject' type='text' /><br />
  Besturingssysteem:<br />
   <select name='system'>
<option value='windows7'>Windows 7</option>
<option value='windowsvista'>Windows Vista</option>
<option value='windowsxp'>Windows XP</option>
<option value='windows98'>Windows 98</option>
<option value='andersonbekend'>Anders of onbekend</option>
</select>
<br />
Werkgeheugen: <br />
<select name='geheugen'>
<option value='minder'>minder</option>
<option value='512mb'>512MB</option>
<option value='1gb'>1GB</option>
<option value='2gb'>2GB</option>
<option value='3gb'>3GB</option>
<option value='4gb'>4GB</option>
<option value='meer'>meer</option>
<option value='andersonbekend'>onbekend</option>
</select>
 <br />
Bericht:<br />
  <textarea name='message' rows='15' cols='40'>
  </textarea><br />
  <input type='submit' />
  </form>";
  }
?>

Alvast bedankt!

Mvg,
Gordonh
 
wat je kan doen is nadat de mail is verstuurd alle var's laten reseten van waarde naar niks.
of bij elk begin van die pagina alle variable's resetten
 
Ik heb dat nu met de functie unset() gedaan maar het werkt niet:confused:



Code:
<?php
function spamcheck($field)
  {
  //filter_var() sanitizes the e-mail
  //address using FILTER_SANITIZE_EMAIL
  $field=filter_var($field, FILTER_SANITIZE_EMAIL);

  //filter_var() validates the e-mail
  //address using FILTER_VALIDATE_EMAIL
  if(filter_var($field, FILTER_VALIDATE_EMAIL))
    {
    return TRUE;
    }
  else
    {
    return FALSE;
    }
  }

if (isset($_REQUEST['email']))
  {//if "email" is filled out, proceed

  //check if the email address is invalid
  $mailcheck = spamcheck($_REQUEST['email']);
  if ($mailcheck==FALSE)
    {
    echo "Er zit een fout in het bericht.";
    }
  else
    {//send email
    $email = $_REQUEST['email'] ;
    $subject = $_REQUEST['subject'] ;
    $message = $_REQUEST['message'] ;
	$system = $_REQUEST['system'] ;
	$geheugen = $_REQUEST['geheugen'] ;
	$ip = $_SERVER['REMOTE_ADDR'];
    mail("forward@repairit-gouda.nl", "onderwerp: $subject",
    $message . " 
Besturingssysteem: " . $system . " 
Geheugen: " . $geheugen . "
email: " . $email . "
ip-adres: " . $ip, "
van: " . $email );
	echo "Uw bericht is verzonden, ik zal zo snel mogelijk een reactie sturen.";
	unset($email,$subject,$message,$system,$geheugen);
    }
  }
else
  {//if "email" is not filled out, display the form
  echo "<form method='post' action='contact13.php'>
  Email: <br /><input name='email' type='text' /><br />
  Onderwerp: <br /><input name='subject' type='text' /><br />
  Besturingssysteem:<br />
   <select name='system'>
<option value='windows7'>Windows 7</option>
<option value='windowsvista'>Windows Vista</option>
<option value='windowsxp'>Windows XP</option>
<option value='windows98'>Windows 98</option>
<option value='andersonbekend'>Anders of onbekend</option>
</select>
<br />
Werkgeheugen: <br />
<select name='geheugen'>
<option value='minder'>minder</option>
<option value='512mb'>512MB</option>
<option value='1gb'>1GB</option>
<option value='2gb'>2GB</option>
<option value='3gb'>3GB</option>
<option value='4gb'>4GB</option>
<option value='meer'>meer</option>
<option value='andersonbekend'>onbekend</option>
</select>
 <br />
Bericht:<br />
  <textarea name='message' rows='15' cols='40'>
  </textarea><br />
  <input type='submit' />
  </form>";
  }
?>
 
ik weet niet of het werkt of dat het uberhaupt mogelijk is, maar misschien als je de $_POST unset.

edit: de $_REQUEST. of misschien je header dumpen!
 
Laatst bewerkt:
Sessie-variabele of cookie aanmaken met een tijdstip van verzending er in waarop je controleert
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan