Tutorial - Formulareingaben zunächst lesen und dann erst senden - mit Kopie an Benutzer

Dieses Tutorial ist nur für fortgeschrittene Benutzer geeignet, die sich bereits gut mit den Formular-Werkzeugen von NOF auskennen und sich auch bereits mit der PHP-Skriptsprache ein wenig beschäftigt haben. Der Einbau meiner Skripte erfolgt wie immer auf eigenes Risiko.

Ich habe dieses Projekt mit NOF 2013 erstellt und in der Publizierungs-Struktur “Nach Site-Struktur” veröffentlicht, sowie die HTML-Ausgabe HTML5 verwendet. Für die Überprüfung von Formularfeldern in HTML5 (ab NOF 2013) guckt bitte hier.

Ich wollte mit diesem Beispiel ein Formular erstellen, das zunächst an eine zusätzliche Seite weitergeleitet wird, sodass der Benutzer die Möglichkeit erhält,  seine Eingaben vor dem Senden nochmals zu überprüfen und bei Bedarf diese zu ändern. Weiterhin habe ich eine Optionsschaltfläche eingebaut, die es dem Benutzer ermöglicht eine Kopie seiner Eingaben als Mail zu erhalten.

Da ich dieses Projekt “Nach Site-Struktur” erstellt habe, sind die relativen Pfadangaben in meinen Seiten anders als es bei der Publizierung “Nach Asset-Typ” der Fall wäre. Hier eine Ansicht meiner Seiten-Struktur.

Zunächst habe ich mein Formular, mit Weiterleitung beim Klick auf den Button “Weiter” zu meiner Seite “lesen.php”, erstellt.

Meine Seite “lesen.php” habe ich also zunächst über ...

> Menü oben > Bearbeiten > Benutzerdefinierte Namen > Dateierweiterung > auf .php umgestellt

... damit die PHP-Skriptsprache, die natürlich am Server vorhanden sein muss, überhaupt erst verarbeitet werden kann.

Dann habe ich mein selbst erstelltes Mail-Skript in die HTML des Layouts meiner Seite “lesen.php” am Beginn der Seite eingetragen.

> Layout markieren > Fenster “Layout-Eigenschaften” > Button “HTML” > ganz oben (keine Leerzeile lassen) am “Beginn der Seite” eintragen

<?php
  
   @session_start();
  
   if (isset($_POST['action']) && ($_POST['action']=='send')) {
     
      // Mail Adresse vom Administrator (unten noch Deine korrekte eMail-Adresse eintragen)
      $admin= "Mail@DeineDomain.de";
     
      // Mail Adresse vom User (wenn das Formular-Feld 'eMail' heißt)
      $useremail= $_SESSION['eMail'];
     
      // Header Information der eMail (Text beliebig änderbar)
      $subject= "Kontakt-Formular von meiner Seite mit Lesen-Option";
      $subjectuser= "Test meiner Nachricht an Tommy mit NOF-Formular";
     
      // Text der e-Mail und Gründung der Variable $message
      $message= "Formular Nachricht an ".$admin.":\n\n";
      $message.= "\n\n";
      $message.= 'Name:'."\n";
      $message.= $_SESSION['Name']."\n\n";
      $message.= 'Ort:'."\n";
      $message.= $_SESSION['Ort']."\n\n";
      $message.= 'Kommentar:'."\n";
      $message.= $_SESSION['Kommentar']."\n\n";
      $message.= 'Mail an Benutzer gesendet:'."\n";
      $message.= $_POST['UserSend']."\n\n\n\n";
      $message.= 'Liebe Grüße von Tommy'."\n\n";
     
      // Abfrage falls die Seite 'lesen.php' direkt aufgerufen wurde ohne das Formular auszufüllen
      if ($_SESSION['Abbruch']=='NEIN') {
        
         // hier wird die Mail an den Administrator gesendet in diesem Format:
         // Empfängeradresse, eMail-Header, Inhalt der Mail, eMail-Absender
         mail($admin, $subject, $message, "From:$useremail");
        
         // Mail an Absender falls gewünscht, bitte bei "From:" noch Deine korrekte eMail eintragen
         // Optionsschaltfläche mit dem Gruppen-Namen 'UserSend' und den Werten 'JA' oder 'NEIN'
         if (isset($_POST['UserSend']) && ($_POST['UserSend']=='JA'))
         {
            mail($useremail, $subjectuser, $message, "From:Mail@DeineDomain.de");
         }
     
         // Hier wird nach erfolgreichem Mail-Versand an die Seite 'gesendet.html' weitergeleitet
         header ('location: ../gesendet/gesendet.html');
         exit;
     
      }else{
     
         // Hier wird abgebrochen an die Seite 'abbruch.html' da das Skript direkt aufgerufen wurde
         header ('location: ../abbruch/abbruch.html');
         exit;
        
      }
     
   }
  
?>

Dieses Skript soll aber nur verarbeitet werden, wenn meine Seite “lesen.php” auch mittels des Klick auf den Button “Senden” des Formulars aufgerufen wurde, daher muss das Skript in eine IF-Bedingung (“wenn”) gepackt werden und es wird mit dem verdeckten Feld “action” geprüft, ob die POST-Variable ...

$_POST['action']=='send'

... ‘action’ existiert und ob deren Wert gleich ‘send’ ist. Dazu muss dieses Feld mittels des Buttons + zunächst, wie im Screenshot unten zu erkennen, auch angelegt worden sein.

Weiterhin könnt Ihr im Screenshot oben erkennen, dass diese Seite (“lesen.php”) bei “Aktion:”, dann beim Klick auf den “Senden” Button erneut mit der relativen Pfadangabe ...

./lesen.php

... aufgerufen wird und somit dann mein Mail-Skript verarbeitet wird.

Im Mail-Skript leite ich nach dem Senden der Mails auf meine Seite “gesendet.html” als Erfolgsseite weiter:

header ('location: ../gesendet/gesendet.html');

Den Gruppennamen der Optionsschaltflächen habe ich hier ‘UserSend” genannt. Beide Optionsschaltflächen müssen also den gleichen Gruppennamen haben. Wenn der “Wert” = “JA” ist, wird eine Kopie der Mail an den Benutzer gesendet, wenn der “Wert” = “NEIN” ist, wird keine Kopie gesendet.

Der Inhalt der POST-Variable ‘UserSend’ wird dann wieder in meinem Mail-Skript oben mittels IF-Bedingung geprüft.

Viel Erfolg!

Für die Anzeige der Mail-Daten habe ich mir jeweils ein Textfeld auf meiner Seite “lesen.php” aufgezogen und diese mittels des PHP ‘echo’ Befehls angezeigt. Dabei müsst Ihr natürlich für jedes Feld auch den vergebenen Feldnamen eintragen, unten als Beispiel für mein Feld ‘Name’.

Diese Skripte tragt Ihr in den HTML-Code Editor des Textfeldes ein.

Gleichzeitig gründe ich hier die SESSION-Variablen aus den POST-Variablen meiner Formular-Seite - verwende htmlspecialchars, um böswillig eingegebene Sonderzeichen in HTML-Code umzuwandeln und trimme diese, um eventuelle Leerzeichen zu eliminieren.

<?php
   $_SESSION['Name']=htmlspecialchars(trim($_POST['Name']), ENT_QUOTES, 'ISO-8859-1');
   $_SESSION['Abbruch']='JA';
   if(!empty($_SESSION['Name']))
   {
      $_SESSION['Abbruch']='NEIN';
      echo "<span style='color : #999999; font-weight:bold'>";
      echo $_SESSION['Name'];
      echo "</span>";
   }else{
      echo "<span style='color : #FF0000'>keine Eingabe</span>";
   }
?>

<?php
   $_SESSION['eMail']=htmlspecialchars(trim($_POST['eMail']), ENT_QUOTES, 'ISO-8859-1');
   if(!empty($_SESSION['eMail']))
   {
      echo "<span style='color : #999999; font-weight:bold'>";
      echo $_SESSION['eMail'];
      echo "</span>";
   }else{
      echo "<span style='color : #FF0000'>keine Eingabe</span>";
   }
?>

... weiterhin habe ich noch eine weitere IF-Bedingung zum Abbruch auf meine Seite “abbruch.html” des Mail-Versands mit der SESSION-Variable ‘Abbruch’ in das Mail-Skript oben für das Pflichtfeld ‘Name’ eingefügt. Diese Variable habe ich in dem Skript unten zur Anzeige der Mail-Daten gesetzt, damit bei einem eventuellen direkten Aufruf meiner Skript-Seite “lesen.php” keine Mail gesendet wird ...

... bei den anderen Feldern lasst Ihr das weg, also würde das Skript dann z.B. bei dem eMail Feld, wie bei den anderen Feldern auch, so aussehen:

Unten eine Ansicht vom HTML-Code Editor meiner Anzeige für das Pflichtfeld “Name

Tutorials von Thomas Frei-Herrmann

diese Seite weiter empfehlen


Counter Statistik