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... Dieses Thema im Forum "Webmaster Support, Scripts, etc" wurde erstellt von masls, 15. März 2009.

  1. masls
    masls Grünschnabel
    Registriert seit:
    15. März 2009
    Beiträge:
    1
    Zustimmungen:
    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
    Registriert seit:
    11. April 2008
    Beiträge:
    2.222
    Zustimmungen:
    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. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden