Formular Skript

Tutorials von Thomas Frei-Herrmann

Formular - Anzeige von Text nach dem Senden der Mail auf der gleichen Seite unter dem “Senden” Button - hier mit Captcha

Ich erhalte eine Mail und nach dem Senden wird auf diese Seite zurückgekehrt. Lasst “Kopie an Benutzer” angehakt um die gleiche Mail selbst zu erhalten. Ihr dürft gerne testen - ich erhalte keine Mail und werde auch nicht antworten.

 

 

 

 

Name:

 

 

Ort:

 

 

Mail:

 

 

Nachricht:

 

Kopie an Benutzer:

 

 

 

 

 

 

 

Diese Seite mit dem Formular unter > “Bearbeiten” > “Benutzerdefinierte Namen” auf die Dateierweiterung .php stellen.
Das Mail-Skript (unten) mit Euren Daten ändern und in die Layout-HTML dieser gleichen Seite kopieren.

Hier haben meine Formular-Felder die Feldnamen: Name, Ort, E-Mail und Nachricht und für die Checkbox als Feldname “UserSend

Layout markieren > Fenster “Layout-Eigenschaften” > “Beginn der Seite” (keine Leerzeile oben lassen) einfügen

<?php
  
   // SESSION auf dieser Seite öffnen - solange das auf der gleichen Seite stattfindet, könnte man auch eine einfache Variable nehmen.
   @session_start();
   $timenow=time();
  
   if (isset($_POST['action']) && ($_POST['action']=='send')) {
     
      if (($timenow-$_POST['zeit'])<=10) {        // 10, 20, .... - sind die Sekunden für eine einfache Spam-Kontrolle
        
         /* SPAM ANGRIFF - nichts wird gesendet und es wird auf diese Formular-Seite zurückgekehrt, falls keine 10 Sekunden gewartet */
        
      } else {
        
         // SESSION-Variable zur Anzeige, wenn das Formular gesendet wurde
         $_SESSION['AnzeigeAufSeite']="JA";
        
         $admin = 'Webmaster@DeineDoamin.de';
         $useremail = $_POST['E-Mail'];
        
         // diese Zeile unten mit Deiner Message beschreiben, die in der Betreff-Zeile der Mail erscheinen soll.
         $Msg = "Mail von meiner Formular-Seite";
        
         // diese Zeile unten mit Der Message für die Kopie an User beschreiben, die in der Betreff-Zeile der Mail erscheinen soll
         $UserMsg = "Guten Tag, dies ist eine Kopie Deiner Nachricht an Tommy";
        
         // Inhalt der Mail als Variable “UserData”, der Punkt verbindet die Zeilen zu einer Variable, die als Inhalt der Mail gesendet wird.
         $UserData  = "Name: " . $_POST["Name"] . "\r\n";
         $UserData .= "Ort: " . $_POST["Ort"] . "\r\n";
         $UserData .= "e-Mail: " . $_POST["E-Mail"] . "\r\n";
         $UserData .= "Nachricht: " . $_POST["Nachricht"] . "\r\n\r\n";
         $UserData .= "Vielen Dank für diese Nachricht, ich werde nicht antworten";
        
         // Mail an Absender senden, wenn dieser das angehakt hatte (bei "From:" noch Deine korrekte Mail-Adresse als Absender eintragen)
         if (isset($_POST['UserSend']) && ($_POST['UserSend']=='on'))
         {
            mail($useremail, $UserMsg, $UserData, "From:Webmaster@DeineDomain.de");
         }
        
         // Mail an Webmaster senden
         mail($admin, $Msg, $UserData, "From:$useremail");
        
         // hier wird auf die Seite weitergeleitet, auf der dieses Formular eingebaut ist - bei mir also auf die gleiche Seite “index.php”
         @header("location: ./index.php");
         exit;
        
      }
     
   }
  
?>

Eigenschaften der Schaltfläche “Senden”. Bei “Aktion:” Euren Seitennamen eintragen, hier ./index.php. Ein verdecktes Feld “action” hinzufügen mit dem Wert “send” zur Prüfung, ob das Formular überhaupt gesendet wurde. Dann noch das verdeckte Feld “zeit” mit dem PHP-Timestamp-Befehl:

<?php echo time();?>

hinzufügen, um ein wiederholtes Senden (hier) erst nach 10 Sekunden zu erlauben. Dies ist kein wirklicher Spam-Schutz - aber es hilft.

Zur Anzeige des Textes, hier unter dem Formular, Textfeld aufziehen und dieses Skript in den HTML-Code-Editor des Textfeldes kopieren. HIer wird die im Skript oben gegründete SESSION-Variable ‘AnzeigeAufSeite’ abgefragt. Wenn die Mail gesendet wurde erscheint der Text.

<?php
   if($_SESSION['AnzeigeAufSeite']=="JA")
   {
       echo "<span style='color : #0000FF'>vielen Dank für Ihre Nachricht</span>";
       // SESSION-Variable zur Anzeige zurücksetzen
       $_SESSION['AnzeigeAufSeite']="NEIN";
   }else{
       echo " ";
   }
?>

Für das Kontrollkästchen (Checkbox) habe ich noch folgende Einstellungen vorgenommen und diesem als Name: und als ID:

UserSend

gegeben, da auf diese POST-Variable im Skript oben geprüft wird, ob der User ebenfalls eine Mail (Kopie) erhalten möchte oder nicht. Wird das Häkchen gesetzt, dann ist der Wert ‘on’ - sonst nicht.

Für das gleiche Formular-Skript mit einer zusätzlichen Prüfung auf Datums-Felder guckt bitte auch hier.

Für ähnliche Mail-Skripte guckt bitte auch hier.

Viel Erfolg !

diese Seite weiter empfehlen



Counter Statistik