Formularüberprüfung im Blog Teil III (PHP)

Formular-Prüfung mit PHP

Nach den beiden Teilen der Formularüberprüfung (Teil 1 und Teil 2) soll nun hier gezeigt werden, wie man ein Formular anlegt und mit PHP verarbeitet.

Programmstruktur

Man kann – wie es in vielen Programmen gemacht wird – 2 php-Programme für diese Aufgabe schreiben. das eine erstell das Coding für das Formular und das zweite Programm verarbeitet das Formular. Oder aber man überlegt sich die Struktur eines einzigen Programmes und benötigt nur ein php-Programm.

Klar ist, dass man diesem einen Programm irgendwie mitteilen muss, wass nun gerade gemacht wird. Wir haben 2-3 Zustände:

  1. Erster Aufruf und somit zeigen des Formulars
  2. Coding das beim Absenden des Formulars ausgeführt wird
  3. Nicht zu vergessen, was passiert bei Fehleingaben?

Nennen wir das php-Programm der Einfachheit halber kontakt.php. Im Fall 1.) soll das Programm mit der URL aufgerufen werden. ( Also http://www.mypage.de/kontakt.php)
Es erfolgt die Ausgabe des Formulars mit allen Feldern und dem Submitbutton. Im 2.) Fall wird das Formular mit Submit abgesendet und soll auch wieder in unserem Programm kontakt.php landen. Nun aber mit der Zusatzinformation „?a=sent“. D.h. der Aufruf müsste nun lauten: http://www.mypage.de/kontakt.php?a=sent. Dann müssen wir uns noch um den Fehlerfall kümmern!

Das Programm, das wir abspeichern müssen heisst also kontakt.php. In ihm verankern wir das Formular mit

<form action=“kontakt.php?a=sent“ name=“kontakt“ method=“post“ onsubmit=“return checkmail()“>
….
….
</form>

Im Parameter action rufen wir unser Programm selbst aber mit dem Parameter a=sent. Damit kommen wir zum gleichen Programm aber nun mit diesem Parameter.
Unser Programm muss also im Prinzip folgendermaßen aussehen:

$action = “;
$action = (isset($_GET[‚a‘]) ? $_GET[‚a‘] : “); //(1)
if($action == ’sent‘) { //(2)
     Mailverarbeitung
}
// Hier Ausgabe des HTML-Headers der Seite
?> //(3)
<script language=“JavaScript“ type=“text/JavaScript“>

function checkmail() {
…….
</script>
<body> //(4)
  <div style=“margin-top:15px“> </div>
  <b/gt;Kontaktformular</b><br />
  <br />
  <?if(empty($action)):?> //(5)
    <form…….
      …….
    </form>
  <endif> //(6)

Zur Erläuterung:

  1. Hier wird die Variable $action definiert und bewertet mit dem Wert des URL-Parameters a. Das übernimmt die globale Variable $_GET. Mit isset wird geprüft, ob
    in $_GET[‚a‘] etwas drinsteht oder nicht. Steht etwas in dem Parameter, dann erhält $action genau diesen Wert.
  2. Jetzt wird gefragt, ob in der Variablen $action der Wert ’sent‘ steht. Ist das so, dann ist klar, dass das Formular ausgefüllt und mit submit gerufen wurde. Andernfalls wäre $action leer und nix würde hier erfolgen. Es erfolgt also hier die Verarbeitung der Formulareingabe. Da unter (3) ja noch unser Javascript steht, das ja im Falle des Submit des Formulars als erstes gerufen wird, kann man hier die Formulareingaben direkt in die zu schreibende Mail übernehmen. Und fertig ist die Eingabeverarbeitung
  3. Hier wird das von PHP auf HTML umgeschaltet. Dies geht immer mit ?> und PHP kann immer mit <?PHP wieder eingeschaltet werden.
  4. Hier beginnt nun die eigentliche Seite in HTML (Beachte, dass wir ja vorher auf HTML umgeschaltet haben)
  5. Jetzt ist die $action Variable ja leer und das zeigt dem Programm, dass wir den ersten Aufruf haben. Also muss das Formular ausgegeben werden.
  6. Die Formularausgabe geht bis hier hin! Dies ist eine weitere Eingabemöglichkeit einer Beendigung eines If-Blogs in php!

Der geneigte Leser wird nun aber gleich sehen, dass die Überschrift „Kontaktformular“ gleich nochmals ausgegeben wird, wenn das Formular abgeschickt wurde.
Das ist nicht so günstig. Deshalb wollen wir hier nach dem Abschluss der Formularverarbeitung dem Benutzer noch das Absenden bestätigen.

Dies könnte man z.B. mit einem Aufruf des Programmes kontakt.php?a=ok bewerkstelligen. Dieser Aufruf sollte aber automatisch gehen und nicht via Klick! Deshalt würde ich den Mailverarbeitungsteil mit folgendem php-Statement beenden:

    header(‚location: ‚.’kontakt.php?a=ok‘);

Hier wird ein HTML-Statement aufgerufen – ein sog. HTML-Header – der das Programm gleich weiterverzweigt, ohne dass der Benutzer etwas eingeben muss.
Das Programm hat also nun 2 Parameter: a=sent und a=ok! Den letzten müssen wir also noch in das Programm eingeben.
Dazu machen wir nach (6) folgenden Eintrag:

  <?PHP if($action == ‚ok‘):?>
    Eine Mail mit Ihren Daten ist an den Besitzer dieser Seite gesendet worden.
  <?PHP endif?>

Jetzt ist das Programm fertig und kann eingebunden werden. Sie sehen an diesem Beispiel wie man PHP, HTML und Javascript mit einander kombinieren kann, und alles auf einer einzeigen Datei. Zugegeben es wird leicht unübersichtlich, doch wenn man sich immer vergegenwärtigt, wo denn nun das Coding ausgeführt wird, dann ist es eigentlich ganz einleuchtend.

Ja ich weis, ich habe die Mailverarbeitung weggelassen, und auch einige Dinge im Programm nur als Kommentare angegben. Doch wer das ganze Programm sehen will, der kann
im Artikel Kontaktformular für das Impressum nachschauen und sich diesen runterladen und einbinden.

Gruß
Bernd Klüppelberg

Bisher gibt es keinen Kommentar. Schreiben Sie einen Kommentar!

Schreibe einen Kommentar