PHP-Formmailer mit Kontrolle & AntiSpam

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • PHP-Formmailer mit Kontrolle & AntiSpam

    Hallo, hoffentlich poste ich hier richtig.

    Ich nutze einen recht einfachen PHP-Formmailer, den ich soweit wie mir möglich, bereits etwas angepaßt habe.
    Zur Überprüfung einer nicht-inhaltsleeren und darüberhinaus formalgültigen Email nutzt er Javascript.
    Dasselbe gilt für den Nachrichteninhalt zwecks Vermeidung leerer Anfragen.

    Wie könnte ich also diese JavaScript Funktionen mit PHP in diesem Formmailer realisieren sowie
    unter Umständen noch Spamschutzfunktionalität ergänzen.
    Es soll ja möglich sein mit Zeitintervallen & Anzahl an Anfragen zu arbeiten.

    Um aus komplexeren anderen freien Scripten Code zu nehmen und meinen Formmailer anzupassen,
    langen meine PHP-Unkenntnisse bei weitem nicht aus nicht aus...

    Das sieht dann so aus:

    Code:
    <script languange="Javascript">
    <!--
    function anfragen_kontrolle(){
    if (document.anfrage.email.value == ""){
      alert("Bitte geben Sie Ihre E-Mail ein!")
      document.eingabe.email.focus();
      return false;
     }
    
     else if (document.anfrage.nachricht.value == ""){
      alert("Bitte geben Sie eine Nachricht ein!")
      document.anfrage.nachricht.focus();
      return false;
     }
    
     else if (document.anfrage.email.value.indexOf ('@',0) == -1 |
    | document.eingabe.email.value.indexOf ('.',0) == -1){
      alert("Bitte geben Sie eine gültige E-Mail ein; d.h. z.B. [email]mustermann@test.de[/email]")
      document.anfrage.email.select();
      document.anfrage.email.focus();
      return false;
     }
     else
     return true;
    }
    -->
    </SCRIPT>
    
     ...
    
    <form name="anfrage" class="text" method="post" action="descript/formmailer.php"
    onSubmit="return anfragen_kontrolle(this.form)">
    Vorname: <input type="text" name="vorname" size="67"><br />
    Nachname: <input type="text" name="nachname" size="67"><br />
    E-Mail*: <input type="text" name="email" size="67"><br />
    Nachricht*:<br />
    <textarea name="nachricht" cols="50" rows="10"></textarea><br>
    <input type="submit"> <input type="reset">
    </form>
    und in der ausgelagerten formmailer.php:

    PHP-Code:
    <?php
    $admin 
    "mustermann@testl.de";
    $subject "Betreff Anfrage";
    $message "Eine Nachricht für $admin von $email:\n\n";

    while(list(
    $name,$value)=each($HTTP_POST_VARS)) {
    $message.="$name$value\n";
    }

    mail($admin,$subject,$message,"From: $email");

    ####### Bestätigungsmail
    # Homepage-Adresse:
    $url "http://mustermann.de";
    # Name des Webmasters
    $webmaster "Mustermann";
    # Signatur anhängen
    $signatur "Testsignatur";
    # Inhalt der Bestätigungsmail:
    $inhalt "Hallo $vorname $nachname,\nvielen Dank für Ihren Besuch auf unserer Seite $url
    Weiterer Text.\n
    Automatisch generierte Mail, bitte nicht antworten!
    \n\nGut Pfad,\n  
    $webmaster\n\n$signatur\n\n
    ===== Beginn Ihrer Anfrage =====
    \n\n
    $nachricht\n\n
    ===== Ende Ihrer Anfrage ====="
    ;
    # E-Mails senden.
    @mail($email,Bestätigungsmail,$inhalt,"From: ".$an);

    ?>

    <?php require_once 'danke.php';
    ?>
    Ok, wahrscheinlich könnte ich das <?php require_once ...
    ganz am Ende innerhalb des ersten
    <?php... ?> tags schreiben und den tag um require_once weglassen?

    Schönes Wochenende
    Zuletzt geändert von flo18; 21.01.2006, 20:51.

  • #2
    Ok, die Mail könnte ich folgendermaßen prüfen, aber wie baue ich das jetzt in mein Script ein?
    Oder würde das gar nicht zu meinem Script passen?

    Bin totaler Newbie in so Sachen...

    PHP-Code:
    function check_email($email) {
    $email eregi("^[a-z0-9]+([-_.]?[a-z0-9])+
    @[a-z0-9]+([-_.]?[a-z0-9])+.[a-z]{2,4}"
    $email);
    return 
    $email;
    }

    Aufrufen mit:
    if(!
    check_email($email))
    echo(
    "Die eMailadresse ist nicht korrekt!"); 
    Zuletzt geändert von flo18; 21.01.2006, 20:46.

    Kommentar


    • #3
      Bitte unsere Regeln lesen und rückwirkend befolgen!
      http://www.php-resource.de/forum/sho...threadid=50454

      Kommentar


      • #4
        Puh, ich hoffe, dass es so besser ist. Was ich möchte ist hoffentlich klar genug (?) ausgedrückt, naja.
        Ich hatte allerdings festgesetllt, dass so wie ich das oben handhabe,
        zwar eine durch das Javascript generierte Warnung kommt,
        welche allerdings trotzdem das Senden zuließ bzw. immer die danke.php erstellt.

        Aus diesem Grund versuche ich mich derzeit an einem anderen Formmailer,
        in dem ich auch bereits den "php-email-check" integrieren konnte.
        Dieser wird dann hoffentlich die Inhalte der danke.php dynamischer gestalten.

        Der Formmailer orientiert sich bzw. stammt von:

        http://www.webmaster-resource.de/tut...mit-php-01.php.

        Den php-mail-check habe ich folgendermaßen integriert:
        Er funktioniert auch, sofern ich allerdings nicht regelkonform arbeite,
        oder es elegantere Lösungen gibt, sagt es doch bitte.

        PHP-Code:
        if($_REQUEST['Send'])
        {
           if(empty(
        $_REQUEST['Name']) || empty($_REQUEST['Nachricht']))
           {
              echo
        "<span class=\"fehler\">FEHLER - Bitte gehen Sie <a class=\"itext\" 
        href=\"../impressum.php\">zurück</a> 
         und geben Sie Name sowie Ihre Nachricht an! </span>"
        ;
           }
        #### neu eingefügt
        function check_email($Email) {
        $Email eregi("^[a-z0-9]+([-_.]?[a-z0-9])+@[a-z0-9]+([-_.]?[a-z0-9])+.[a-z]{2,4}"$Email);
        return 
        $Email;
        }
        # Aufrufen mit:
        if(!check_Email($Email))
        echo(
        "<span class=\"fehler\">FEHLER - Bitte gehen Sie <a class=\"itext\"
         href=\"../impressum.php\">zurück</a>
         und verwenden Sie eine korrekte eMailadresse!</span>"
        );
        #### ende eingefügt 
        Auf alle Fälle bin ich froh, dass hier auf einer höflichen Grundlage gearbeitet wird!

        Edit:
        Kann man ein Auslesen meiner Email (also der Mail, an welche die Kontaktgesuche gesendet werden)
        durch Spambots/spiders (?) vermeiden, indem ich aus dem Formular heraus an eine php-Datei verweise,
        welche dann das eigentliche php-Script aus dem .htaccess geschützten Ordner X via require_once includen lasse?
        Mit meinem Browser zumindest habe ich keine Zugangsberechtigung mehr zu diesem Ordner X, dasselbe müsste doch auch für Spambots gelten?

        Allerdings wüßte ich immer noch gerne,
        wie man allzu äufiges Nutzen des Formulars innerhalb einer Frist durch einen Nutzer verhindern könnte.
        Zuletzt geändert von flo18; 23.01.2006, 21:37.

        Kommentar

        Lädt...
        X