php: Spammschutz für Kontaktformular

Diskutiere und helfe bei php: Spammschutz für Kontaktformular im Bereich Webmaster Support, Scripts, etc im SysProfile Forum bei einer Lösung; Hallo zusammen, ich habe auf meiner Homepage ein Kontaktformular. Da sich in letzter Zeit der SPam massiv häuft (ca. 20-30 Nachrichten pro Tag) würde... Discussion in 'Webmaster Support, Scripts, etc' started by masls, Mar 15, 2009.

  1. masls
    masls Grünschnabel
    Joined:
    Mar 15, 2009
    Messages:
    1
    Likes Received:
    0

    Hallo zusammen,
    ich habe auf meiner Homepage ein Kontaktformular. Da sich in letzter Zeit der SPam massiv häuft (ca. 20-30 Nachrichten pro Tag) würde ich gerne eine Hürde einbauen. Captcha mag ich nicht so gerne.
    Ich hätte an Felder (Checkboxen) gedacht "Ich möchte die Nachricht abschicken" und "Ich möchte die Nachricht nicht abschicken" (o.ä.). Ersteres muss aktiviert sein, zweiteres darf nicht aktiviert sein. Und erst wenn das zutrifft darf die Nachricht abgeschickt werden.
    Nun zu meinem Problem. Ich kann noch kein php =/
    Ist es sehr aufwendig das einzubauen? Kann mir jemand einen Anhaltspunkt geben?
    Ich habe mal den betreffenden php-Code kopiert.

    php-Code:

    PHP:
    <?php
      $formularAnzeigen 
    false;
      if (!empty(
    $_POST["senden"]) && (
          empty(
    $_POST["vorName"]) ||
          empty(
    $_POST["nachName"]) ||
          empty(
    $_POST["eMail"]) ||
          empty(
    $_POST["nachricht"]))) {
        
    $formularAnzeigen true;
        echo 
    '<span style="color: #FF0000; font-size: x-large;">Bitte alle Pflichtfelder ausfuellen.</span>';
      } else if (!empty(
    $_POST["senden"]) &&
                 !
    isEmail($_POST["eMail"])) {
        
    $formularAnzeigen true;
        echo 
    '<span style="color: #FF0000; font-size: x-large;">Die E-Mail-Adresse ist nicht korrekt.</span>';
      } else if (empty(
    $_POST["senden"])) {
        
    $formularAnzeigen true;
      }
      if (
    $formularAnzeigen) {
    ?>
    und:

    PHP:
    <?php
      
    echo'';
      } else {
        
    $eMail '

    Anrede:
    '
    .$_POST['anrede'].'

    Vorname:
    '
    .$_POST['vorName'].'

    Nachname:
    '
    .$_POST['nachName'].'

    Firma:
    '
    .$_POST['Firma'].'

    E-Mail:
    '
    .$_POST['eMail'].'

    Telefon:
    '
    .$_POST['telefon'].'

    Betreff:
    '
    .$_POST['betreff1'].'

    Nachricht:
    '
    .$_POST['nachricht'].'

    Kopie der Nachricht:
    '
    .$_POST['kopie'].'';

        if (@
    mail("name@xx.de",
             
    "Neue Nachricht vom Kontaktformular",
             
    $eMail)) {
          echo 
    "Ihre Nachricht wurde an uns verschickt, vielen Dank!<br />";
        } else {
          echo 
    "E-Mail-Verkehr funktioniert zur Zeit nicht<br />";
        }
        if (
    $_POST['kopie']) {
          if (@
    mail($_POST['eMail'],
               
    "Hier die Kopie Ihrer Nachricht an mich",
               
    $eMail)) {
            echo 
    "Sie haben eine Kopie der Nachricht zugeschickt bekommen.<br />";
          }
        }
      }

      function 
    isEmail($email) {
        
    $nonascii      "\x80-\xff";
        
    $nqtext        "[^\\$nonascii\015\012\"]";
        
    $qchar         "\\[^$nonascii]";
        
    $protocol      "(?:mailto:)";
        
    $normuser      "[a-zA-Z0-9][a-zA-Z0-9_.-]*";
        
    $quotedstring  "\"(?:$nqtext|$qchar)+\"";
        
    $user_part     "(?:$normuser|$quotedstring)";
        
    $dom_mainpart  "[a-zA-Z0-9][a-zA-Z0-9._-]*\.";
        
    $dom_subpart   "(?:[a-zA-Z0-9][a-zA-Z0-9._-]*\.)*";
        
    $dom_tldpart   "[a-zA-Z]{2,5}";
        
    $domain_part   "$dom_subpart$dom_mainpart$dom_tldpart";
        
    $regex         "$protocol?$user_part\@$domain_part";
        if (
    preg_match("/^$regex$/",$email)) {
          return 
    true;
        }
        return 
    false;
      }
    ?>
    Ich hoffe mir kann jemand helfen.
    Vielen Dank und viele Grüße
    masls
     
  2. Racer X
    Racer X Alter Hase
    Joined:
    Apr 11, 2008
    Messages:
    2,222
    Likes Received:
    78
    1. SysProfile:
    72607
    2. SysProfile:
    14421

    Mach doch einfach ne IP Sperre rein. So für eine stunde oder so Pro IP

    Tutorial:
    http://www.php-resource.de/tutorials/read/6/1/

    Ansonsten musste halt die Checkboxen Mit werten Verknüpfen und eine IF Else Schleife einbauen
     
Thema:

php: Spammschutz für Kontaktformular

  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice