php form beveiligen tegen spam

Status
Niet open voor verdere reacties.

renzolini

Gebruiker
Lid geworden
5 jun 2006
Berichten
257
Ik heb volgende code op mijn site geïnstalleerd met uiteraard een html form met in de code een verwijzing naar bestand met de php code "<form name="contactform" method="post" action="send_form_email.php">"

Vraag is hoe kan ik op een simpele manier ervoor zorgen dat bezoekers voor de lol het formulier 10 keren na mekaar versturen?
Sorry maar ik ben een echte leek in het php programmeren.

PHP:
<?php
 
if(isset($_POST['email'])) {
 
     
 
    // EDIT THE 2 LINES BELOW AS REQUIRED
 
    $email_to = "mail@adres.be";
 
    $email_subject = "Bericht vanuit Loopkalender & Uitslagen";
 
     
 
     
 
    function died($error) {
 
        // your error code can go here
 
        echo "Sorry, maar we hebben enkele errors. ";
 
        echo "Dit zijn de errors.<br /><br />";
 
        echo $error."<br /><br />";
 
        echo "Ga terug en vul het formulier volledig in.<br /><br />";
 
        die();
 
    }
 
   // antiflood controle
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
    if (!empty($_SESSION['antiflood']))
    {
        $seconde = 20; // 20 seconden voordat dezelfde persoon nog een keer een e-mail mag versturen
        $tijd = time() - $_SESSION['antiflood'];
        if($tijd < $seconde)
            $antiflood = 1;
    }   
} 
    // validation expected data exists
 
    if(!isset($_POST['first_name']) ||
 
        !isset($_POST['last_name']) ||
 
        !isset($_POST['email']) ||
 
        !isset($_POST['url']) ||
 
        !isset($_POST['comments'])) {
 
        died('We are sorry, but there appears to be a problem with the form you submitted.');       
 
    }
 
     
 
    $first_name = $_POST['first_name']; // required
 
    $last_name = $_POST['last_name']; // required
 
    $email_from = $_POST['email']; // required
 
    $url = $_POST['url']; // not required
 
    $comments = $_POST['comments']; // required
 
     
 
    $error_message = "";
 
    $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
 
  if(!preg_match($email_exp,$email_from)) {
 
    $error_message .= 'The Email Address you entered does not appear to be valid.<br />';
 
  }
 
    $string_exp = "/^[A-Za-z .'-]+$/";
 
  if(!preg_match($string_exp,$first_name)) {
 
    $error_message .= 'The First Name you entered does not appear to be valid.<br />';
 
  }
 
  if(!preg_match($string_exp,$last_name)) {
 
    $error_message .= 'The Last Name you entered does not appear to be valid.<br />';
 
  }
 
  if(strlen($comments) < 2) {
 
    $error_message .= 'The Comments you entered do not appear to be valid.<br />';
 
  }
 
  if(strlen($error_message) > 0) {
 
    died($error_message);
 
  }
 
    $email_message = "Form details below.\n\n";
 
     
 
    function clean_string($string) {
 
      $bad = array("content-type","bcc:","to:","cc:","href");
 
      return str_replace($bad,"",$string);
 
    }
 
     
 
    $email_message .= "Voornaam: ".clean_string($first_name)."\n";
 
    $email_message .= "Familienaam: ".clean_string($last_name)."\n";
 
    $email_message .= "E-mail: ".clean_string($email_from)."\n";
 
    $email_message .= "URL adres: ".clean_string($url)."\n";
 
    $email_message .= "Bericht: ".clean_string($comments)."\n";
 
     
 
     
 
// create email headers
 
$headers = 'From: '.$email_from."\r\n".
 
'Reply-To: '.$email_from."\r\n" .
 
'X-Mailer: PHP/' . phpversion();
 
@mail($email_to, $email_subject, $comments, $headers);  


 if (mail($mail_ontv, $_POST['subject'], $comments, $headers))
  {
      // zorg ervoor dat dezelfde persoon niet kan spammen
      $_SESSION['antiflood'] = time();
      
      echo '<h1>Het contactformulier is verzonden</h1>
      
      <p>Bedankt voor het invullen van het contactformulier. We zullen zo spoedig mogelijk contact met u opnemen.</p>';
  }
  else
  {
      echo '<h1>Het contactformulier is niet verzonden</h1>
      
      <p><b>Onze excuses.</b> Het contactformulier kon niet verzonden worden.</p>';
  } 
?>
 
 
 
<!-- include your own success html here -->
 
 
 
Bedankt om mij te contacteren, we zullen zo vlug mogelijk je mail behandelen en beantwoorden.
 
 
 
<?php
 
}
 
?>
 
Laatst bewerkt door een moderator:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan