Kontaktformular

Kontaktformular

Nachdem Sie nun die Grundlagen von PHP kennen gelernt haben, sind Sie in der Lage, PHP für eine erste Aufgabe einzusetzen. Sie alle kennen Webseiten, auf denen Sie aufgefordert werden, in bestimmten Feldern etwas einzugeben, beispielsweise Namen, Benutzernamen, E-Mail-Adresse etc. Ähnlich häufig bieten Webseiten Auswahlfelder, in denen Sie sich für eine der Optionen entscheiden, oder Kontrollkästchen, mit denen Sie durch Aktivierung eines der Kästchen eine Wahl treffen. Solche Seiten können mit einem mehr oder minder aufwändigen HTML-Formular realisiert werden. PHP übernimmt die Aufgabe, die Formulardaten zu verarbeiten und auszuwerten. Ein HTML-Formular in Kombination mit PHP ist der praktikabelste Weg, aus Ihrer Webseite interaktive Webseiten zu erzeugen.

Dieser Artikel wird zeigen, wie Sie ein Formular erzeugen und wie die Daten vom Browser zum Server und damit zum PHP-Script transferiert werden. Das Formular wird drei Eingabefelder enthalten sowie ein Mehrfachauswahlfeld, sodass - da ja unterschiedliche Optionen ausgewählt werden können - im PHP-Script auch eine if-Anweisung zum Einsatz kommt. Natürlich müssen in diesem Zusammenhang auch die beiden unterschiedlichen Methoden diskutiert werden, mit denen die Übertragung der Daten zum Server erfolgen kann: Get oder Post.

Vorüberlegungen

Im ersten Schritt erzeugen Sie das Formular mithilfe der entsprechenden HTML-Tags zur Darstellung von Eingabefeldern. Da Sie die Tags und die verschiedenen Elemente/Parameter für ein Formular vielleicht nicht alle parat haben, stellen wir auch die HTML-Lösung kurz vor. Das Entscheidende ist folgender Zusammenhang:

Im einleitenden <Form>-Tag geben Sie mit dem Attribut action eine Datei an, die aufgerufen wird, sobald Sie das Formular abschicken. Wird mit dem Formular auf diesem Weg eine PHP-Datei aufgerufen, stehen die Werte, die in das Formular eingegeben oder ausgewählt wurden, in der PHP-Datei als Variablen zur Verfügung. Die Namen der Variablen sind identisch mit denen der Formularelemente im Formular, also mit den Namen, die Sie mit dem Attribut name der einzelnen Formularelemente festlegen. Haben Sie in dem Formular ein Element mit dem Namen nachname (name='nachname'), wird der Wert bzw. der in das Feld eingegebene Text in dem aufgerufenen PHP-Script in der Variablen $nachname zur Verfügung stehen.

Das PHP-Script muss/sollte so geschrieben werden, dass mögliche Fehler bei der Eingabe

berücksichtigt werden, der Webseiten-Besucher also beispielsweise aufgefordert wird, die Felder auszufüllen, sofern er es nicht getan hat. Dann stellt sich die Frage: Was soll mit den Formulardaten geschehen? Denkbar ist als Verarbeitung, dass der Webseiten-Besucher nach dem Abschicken der Daten eine Seite erhält, die seine Eingaben nochmals bestätigt, also eine Art Feedback-Seite. Dies ist die einfache Variante und relativ schnell gemacht.

Der zentrale Punkt ist bei einem Kontaktformular jedoch das dauerhafte Sichern der Formulardaten. Dies geschieht in der Regel mithilfe einer separaten Textdatei oder einer Datenbank. Da Sie in diesem Kapitel jedoch die ersten konkreten Gehversuche in PHP-Programmierung machen, möchten wir hier noch nicht mit Dateien oder Datenbanken hantieren. Darüber dürfen Sie sich den Kopf zerbrechen, wenn Sie bereits ein paar Erfahrungen gesammelt haben. In diesem Beispiel sollen die Formulardaten lediglich an eine E-Mail-Adresse geschickt werden. Diese Aufgabe führt der PHP-Befehl mail() aus.

Für den Einstieg wird zunächst die eben erwähnte einfache Variante durchgespielt, in der die Eingaben nur zurückgegeben werden; anschließend wird die Kontrolle der Eingaben implementiert und danach ein neues Script erstellt, das keine Feedback-Seite erzeugt, sondern die Daten wie eben angekündigt an eine E-Mail-Adresse sendet.

adress book 128

Das Kontaktformular erstellen

Beginnen Sie nun damit, das HTML-Formular zu erstellen. Öffnen Sie dazu im Editor eine neue Datei und geben Sie die für ein HTML-Dokument üblichen Tags für das Grundgerüst ein:

<html>
<head>
<title>Ein Kontaktformular</title>
</head>
<body>
</body>
</html>

Im <body>-Container definieren Sie, beginnend mit dem <form>-Tag, die Formularfelder. Das Formular soll Eingabefelder für den Vornamen, den Nachnamen und die E-Mail- Adresse enthalten und außerdem ein Auswahlfeld, mit dem der Besucher die Möglichkeit hat, eine der in der Liste angebotenen Optionen auszuwählen.

Setzen Sie den Cursor unterhalb des <body>-Tags und geben Sie den HTML-Text so ein wie unten zu sehen. Speichern Sie das Dokument dann als eine HTML-Datei, also beispielsweise als Kontakt.html.

<html>
<head>
<title>Kontakt-Formular</title>
</head>
<body>
<p>
<h3>Geben Sie Ihre Daten ein!</h3>
<form action="antwort.php" method=post>
Vorname
<br>
<input type=text name="vorname" size=20>
<br>
Nachname
<br>
<input type=text name="nachname" size=20><p>
E-Mail
<br>
<input type=text name="email" size=30><p>
<h4>Wie hat Ihnen das Spiel gefallen?</h4><p>
<select size=1 name="rank">
<Option value="keine Angabe">keine Angabe</option>
<Option value="sehr gut">sehr gut</option>
<Option value="gut"> gut</option>
<Option value="nicht so gut">nicht so gut</option>
</select>
<p>
<input type=submit name="submit" value="abschicken">
</form>
</body>
</html>

Erläuterung des Scripts

Mit dem <form>-Tag beginnen Sie das Formular. Der Wert des dann folgenden Arguments action= gibt dem Server an, welches PHP-Script die Daten aus dem Formular erhalten wird. Die Eingabe method=post bestimmt die Methode, mit der die Daten weitergegeben werden. Die alternative Methode wäre get. Mit dem Tag <input type=text> wird ein Textfeld erzeugt, das Attribut size legt die sichtbare Größe des Textfeldes fest. Durch <br> wird einen Zeilenumbruch erzeugt, sodass das Formular insgesamt übersichtlicher aussehen wird.

Legen Sie Ihr Augenmerk besonders auf das Attribut name, beispielsweise name="vorname".

Der hier festgelegt Wert ("vorname") wird als Variable an das PHP-Script, das die Daten verarbeitet,

weitergegeben. PHP identifiziert damit den Wert des Formularelements. Es ist also wichtig, diese Namen zu erinnern und konsistent zu benutzen.

Vorsicht: PHP ist bei der Groß- und Kleinschreibung so sensibel wie ein deutscher Gymnasiallehrer - nicht hinsichtlich korrekter Schreibweise, aber hinsichtlich der gleichbleibenden Verwendung von großen oder kleinen Buchstaben! Es unterscheidet also zwischen Vorname und vorname.

page search 128

Das Drop-Down-Menü

Neben den drei Textfeldern wird mit dem Element <select> eine Auswahlbox in Form eines Drop-Down-Menüs definiert, damit der geneigte Besucher eine Meinung abgeben kann. Die Werte der Auswahlbox werden einzeln mit

<option value="übermittelter Wert">Beschriftung</option>

eingegeben. Wird für eine Option kein value festgelegt, wird die Beschriftung übermittelt. Das schließende </option>-Tag ist laut HTML-Spezifikation nicht zwingend erforderlich, aber der Vollständigkeit halber verwenden wir es hier dennoch. Auch dieses Element braucht einen Namen, damit PHP darauf zugreifen kann. Im Beispiel wurde rank verwendet. Da <select> als Container dient, muss es durch </select> geschlossen werden.

Beachten Sie hier die erste Option keine Angabe. Sofern durch das Attribut selected keine Vorauswahl einer Option getroffen wurde, wird die erste Option automatisch im Feld angezeigt und wird - sofern der User keine andere Wahl trifft - beim Abschicken des Formulars übermittelt. Aus diesem Grund sind Sie gut beraten, wenn Sie eine Option standardmäßig aktivieren. So ist es möglich zu erkennen, ob der User aktiv eine Auswahl getroffen hat oder nicht, sodass spätere Auswertungen nicht verfälscht werden.

Die Sendeschaltfläche

Last but not least enthält das Formular eine Sendeschaltfläche. Diese Schaltfläche verwendet normalerweise den in value festgelegten Wert als Bezeichner. Wird als value nichts eingegeben, erscheint der Standardtext Submit oder Abfrage absenden - je nach Browser und Ländereinstellung. Vergessen Sie nicht, das Formular mit einem schließenden </form>-Tag zu beenden.

Das von uns entworfene Formular ist, wie Sie sehen werden oder bereits am HTML-Text erkennen, relativ schlicht und enthält wenig Layout-Elemente. Sie können selbstverständlich an dem Aussehen des Formulars feilen, beispielsweise durch die Verwendung einer Tabelle, der Formatierung des Textes etc. Wir wollen uns jedoch auf die Vermittlung von PHP konzentrieren und verzichten von daher in den meisten Fällen bzw. Beispielen auf eine ausgeklügelte Layout-Technik.

Überprüfen des Formulars

kontaktformular_01

Sobald Sie das HTML-Formular erstellt und gespeichert haben, können Sie im Browser einen Blick darauf werfen. Rufen Sie einfach Ihren Standard-Browser und die entsprechende Datei auf.

Die Übertragungsmethoden Post und Get

Die Daten eines HTML-Formulars müssen für die Auswertung durch PHP auf den Server übertragen werden. Dabei können Sie zwischen zwei Methoden wählen: Das eine ist die Methode Post (nein, nicht die snail-mail!), das andere die Methode Get. Üblicherweise verwenden Sie bei Formularen Post, und nur in besonderen Fällen Get.

Datenübertragung mit Get

Die Datenübertragung mit der Methode Get ist Ihnen sicherlich schon beim Surfen durch das Netz aufgefallen. Die Werte des Formulars werden an die URL zum Aufrufen der Seite, getrennt durch ein Fragezeichen, angehängt. Die Variablen/Namen der Formularelemente werden durch ein Gleichheitszeichen von den Werten getrennt. Einzelne Namen/Werte-Paare werden durch das kaufmännische UND-Zeichen (&) zusammengekettet. Eine URL, die Daten überträgt, sieht dann folgendermaßen aus:

http://www.domaine.de/datei.php?variablenname1=wert1&variablenname2=wert2

oder bezogen auf unsere Beispieldatei

http://www.domain.de/antwort.php?vorname=wert1&nachname=wert2

Dazu müssen/sollten Sie noch wissen, dass die Übertragung mit der Get-Methode einigen Restriktionen unterliegt: Insgesamt können auf diese Weise maximal ca. 2Kbyte Daten übertragen werden, wobei Feldnamen und Trennzeichen mitgezählt werden. Weiterhin können keine Sonderzeichen, Leerstellen etc. übermittelt werden; diese Sonderzeichen werden in Hexadezimalform übertragen. Die Methode Get eignet sich insbesondere dazu, Daten an ein Script zu übergeben, das Sie per Hyperlink aufrufen möchten, ohne aufwändig ein Formular zu gestalten.

Info

Um die Daten des Hyperlinks in die benötigte Form zu bringen, sodass keine Sonderzeichen etc. enthalten sind, bietet PHP die Befehle urldecode und urlencode an. Dazu erfahren Sie u.a. in der Befehlsreferenz mehr.

email_open 128

Datenübertragung mit Post

Mit Post werden die Formulardaten als Bestandteil des gesamten Datenblocks übertragen. Die Daten werden für den Anwender nicht in der URL sichtbar, und die Datenmenge unterliegt eigentlich keiner Größenbeschränkung - eigentlich, weil die Laufzeit der Scripte aus Sicherheitsgründen meistens auf 30 Sekunden von den Providern beschränkt wird. Alle Daten, die bis dahin von dem aufgerufenen Script nicht abgearbeitet wurden, sind verloren, sobald diese Laufzeitsperren überschritten werden. Für Formulare ist im Allgemeinen immer die Methode Post zu empfehlen.

Daten übermitteln per URL

Sicherlich stammen nicht immer alle Daten von einem Formular. Prinzipiell lassen sich Daten auch per URL übertragen. Bei dieser Methode rufen Sie die Datei wie üblich im Browser aus, hängen den Namen der ersten Variablen an die Adresse, und zwar abgetrennt durch ein Fragezeichen und dann weisen Sie nach einem Gleichheitszeichen den Wert zu. Im Ausschnitt sieht das so aus:

antwort.php?vorname=Micky

Weitere Variablen werden mit einem kaufmännischen UND (&) angehängt.

antwort.php?vorname=Micky&nachname=Maus

Mit dem PHP-Script können Sie nun auf die Inhalte der Variablen zugreifen. Sie benutzen wie üblich den echo-Befehl und schreiben beispielsweise:

echo "Hallo $vorname $nachname;

Das PHP-Script für eine Feedback-Seite

Im Anschluss an das Formular kreieren wir ein PHP-Script, das die Daten aus dem Formular übernimmt und dem Besucher eine neue Seite anzeigt, die seine Eingaben bestätigt. Für diese Art der Verarbeitung, d.h. die Ausgabe im Browser, benutzen Sie lediglich den PHP-Befehl echo.

Außerdem brauchen Sie den Befehl if bzw. den Befehl if-else, um das Auswahlfeld des Formulars auszuwerten und je nach getroffener Auswahl eine unterschiedliche Reaktion auszulösen.

kontaktformular_02

  • 1. Starten Sie in Ihrem Editor ein neues Dokument und geben Sie als Erstes die üblichen Standard-Elemente ein, also <html> etc.
  • 2. Ergänzen Sie das Dokument durch den PHP-Teil, indem Sie in den <body>-Container die PHP-Tags <?php und ?> schreiben.
  • 3. Nun beziehen Sie sich auf den vom Formular übermittelten Wert des Attributes name im Formularelement vorname. PHP stellt diesen Wert in einer Variablen gleichen Namens zur Verfügung; entsprechend geben Sie den zugewiesenen Wert beginnend mit einem Dollarzeichen ein. Folglich schreiben Sie:
echo 'Ihr Vorname ist $vorname';
  • 4. Analog geben Sie dann ein:
echo 'Ihr Nachname ist $nachname';
  • 5. Danach schreiben Sie:
echo 'Ihre E-Mail-Adresse ist $email';

Damit der Text leserlich wird, sollte noch ein Zeilenumbruch für jede Zeile angewiesen werden. Ergänzen Sie also die 'echo-Befehle' noch durch <br> in jeder Zeile. Achten Sie darauf, das <br> jeweils mit in die Anführungszeichen zu schreiben. Das Script sieht also bis dahin folgendermaßen aus:

<html>
<head>
<title>Kontaktformular</title>
</head>
<body>
<?php
echo 'Ihr Vorname ist $vorname<br>';
echo 'Ihr Nachname ist $nachname<br>';
echo 'Ihre E-Mail-Adresse ist $email<br>';
?>

Die If-Anweisung

Nun geht es an die if-Anweisung, die in das Script einzubauen ist. Erinnern Sie sich an das Auswahlfeld: Der Besucher der Seite kann zwischen drei Optionen wählen: sehr gut gefallen, gut gefallen und nicht gut gefallen. Sofern die Option nicht gut gefallen eingestellt wurde, soll ein anderer Text angezeigt werden als bei den ersten beiden Optionen. Da auch noch die Option Keine Angabe zur Auswahl steht, brauchen wir einen dritten Text. Diese Verzweigung ist mit if-elseif-else zu erreichen. Das heißt im Klartext: ist die if-Bedingung true (wahr), dann soll geschehen, was in der Anweisung angegeben wird; ist die elseif-Bedingung wahr, tritt ein anderes Ereignis ein, ansonsten folgt die Anweisung im else-Block.

Werfen Sie einen Blick auf den Code unten. Sie finden hier die if-Anweisung, die elseif-Anweisung und den else-Block. Beachten Sie, dass Sie jeweils den Vergleichsoperator, also die doppelten Gleichheitszeichen benutzen müssen. Natürlich können Sie den Text variieren. Vergessen Sie aber nicht die Anführungszeichen und das Semikolon.

Info

In dem action-Attribut des <form>-Tags können Sie wie bei Hyperlinks relative und absolute Verweise verwenden, um die Datei aufzurufen, die die Formulardaten auswerten soll. Auch lässt sich mit dem Attribut target angeben, in welchem Frame, sofern ein Frameset vorhanden ist, die Antwortseite ausgegeben werden soll. Mit target=_blank rufen Sie die Antwortseite in einem neuen Browserfenster auf.

Speichern Sie das Dokument im PHP-Format unter der Bezeichnung, die Sie im HTML-Formular als Wert des action-Attributs angegeben haben. Im Beispiel war es antwort.php. Achten Sie auch darauf, es im gleichen Verzeichnis wie das HTML-Formular zu speichern.

<html>
<head>
<title>Kontakte</title>
</head>
<body>
<?php
echo "Ihr Vorname ist <br>$vorname<br>";
echo "Ihr Nachname ist<br>
$nachname<br>";
echo "Ihre E-Mail ist<br>
$email<br>";
echo "Ihre Note für unser Spiel ist<br>
$rank<p>";
if ($rank=="keine Angabe")
{echo "Danke für die Teilnahme";}
elseif($rank=="nicht so gut")
{echo "Schade, dass das Spiel Ihnen nicht gefallen hat";}
else
{echo "<b>Schön, dass Ihnen das Spiel gefallen hat</b>";}
?>
</body>
</html>

Info

Alle Werte und Elementnamen, die das Formular an die Antwortseite überträgt, werden in einem Array gespeichert, sodass Sie Formulare sogar auswerten können, wenn Sie nicht wissen, wie die Formularelemente heißen. Das Array trägt den vordefinierten Namen $HTTP_POST_VARS. Es handelt sich um ein assoziatives Array. Als Schlüssel werden die Namen der Formularelemente verwendet. Auf die Werte des Formularelements vorname greifen Sie also mit $HTTP_POST_VARS[vorname] zu. Sie können das Array aber auch Element für Element z.B. in einer while- oder for-Schleife bearbeiten.

Das Formular testen

Sie können nun probieren, ob das Formular die gewünschte Reaktion auslöst. Rufen Sie das Formular auf und tragen Sie Daten ein. Im Auswahlfeld entscheiden Sie sich für eine Option. Danach klicken Sie auf die Schaltfläche abschicken.

Funktioniert das Script, erhalten Sie nun die entsprechende Meldung, und zwar - bedingt durch die if-Verzweigung - entweder eine Seite wie in Bild oder eine Seite mit einem der anderen Texte.

Ein neues Script: HTML und PHP werden kombiniert

Obwohl Sie sich zu Ihrer ersten erfolgreichen dynamischen Webseite gratulieren dürfen, ist deutlich, dass noch einige Schönheitsfehler auszubügeln sind. In der jetzigen Form ist es sehr einfach. Aber im Ernstfall werden Sie dafür sorgen wollen, dass das Formular nur vollständig ausgefüllt abgeschickt wird, und der Besucher gegebenenfalls eine entsprechende Aufforderung bzw. Bitte erhält. Dies wurde bisher nicht integriert und soll nun nachgeholt werden.

kontaktformular_03

kontaktformular_04

Hier kommt nun eine entscheidende Überlegung hinzu: wenn das Formular unvollständig abgeschickt wird, soll eine Meldung erfolgen und der Surfer die Möglichkeit haben, in dem Formular seine Angaben erneut einzugeben. Das heißt, PHP rekurriert auf und verarbeitet bereits getätigte Eingaben, erzeugt die Fehlermeldung und soll anschließend das Formular erneut anzeigen. Daher ist es nun sinnvoll bzw. erforderlich, nicht mehr mit zwei Dateien zu arbeiten, sondern HTML und PHP in einem Dokument zu kombinieren. (Eine andere Möglichkeit wäre es, im PHP-Script die Felder des HTML-Formulars als Felder mit dem Typ Hidden wieder aufzunehmen). Das Resultat wird dann eine Seite sein, die sowohl die Formularfelder zeigt als auch die Feedback-Meldungen.

Sie machen sich am wenigsten Mühe, wenn Sie das bisherige HTML-Script sowie das PHP-Script kopieren,

im Editor eine neue Datei beginnen und die Kopien in die neue Datei einfügen. Danach wird es dann um die Elemente ergänzt, die notwendig sind, um den Besucher auf eine fehlende Eingabe aufmerksam zu machen.

Sie benutzen dazu wieder eine if-Anweisung, denn es geht ja wieder um eine Bedingung, die wahr oder falsch sein kann: ist das Feld ausgefüllt (true) oder nicht (false). Der im nächsten Abschnitt vorgestellte Weg ist nicht der eleganteste, wird aber fürs Erste verwendet, damit die Eingaben nachvollziehbar bleiben, obwohl die Schreibweise im Prinzip zu umständlich ist. In dem Kapitel, in dem ein Gästebuch programmiert wird, erfahren Sie dann, wie eine ähnliche Aufgabe geschickter gelöst werden kann.

Fehlende Eingaben im Script berücksichtigen

  • 1. Öffnen Sie ein leeres Dokument im Editor und fügen Sie die Kopie des HTML-Scripts und des PHP-Scripts in das neue Dokument ein.
  • 2. Der HTML-Teil kann fast so bleiben wie er ist. Das Attribut action im <form>-Tag braucht natürlich einen anderen Wert, denn Sie verweisen jetzt ja nicht auf eine zweite PHP-Datei, die die Daten verarbeitet. Geben Sie also den Dateinamen dieser Datei ein.
<form action="aktuelle_Datei.php"

Außerdem löschen Sie vor dem Beginn des eingefügten PHP-Teils die Tags, die den Body-Container und HTML schließen.

Info

Es gibt auch die Variable $PHP_SELF. In dieser Variablen steht immer der Pfad zu der aktuellen Datei. Wenn Sie also über das action-Attribut das Script sich selbst aufrufen lassen wollen, können Sie diese Variable verwenden. Sie müssten dann Folgendes als action setzen:

action="<?php echo $PHP_SELF; ?>"

Beachten Sie, dass der Befehl, da $PHP_SELF eine PHP-Variable ist, durch die PHP-Zeichen abgegrenzt werden muss.

  • 3. Der PHP-Teil wird mit <?php geöffnet. Die mit echo beginnenden Zeilen bleiben ebenfalls wie gehabt.
  • 4. Erzeugen Sie danach eine neue Zeile und schreiben Sie eine if-Anweisung:
if (!$vorname) {echo ='Bitte geben Sie einen Vornamen ein<br>';}

Erklärungsbedürftig ist das Ausrufezeichen vor der Variablen $vorname. Um es zu verstehen, machen Sie sich am besten noch einmal klar, was die if-Anweisung auf gut deutsch sagt: wenn die Bedingung true (wahr) ist, dann soll ein bestimmtes Ereignis eintreten. If($vorname) ist true, wenn in der Variablen beliebiger Text enthalten ist. Wir wollen aber ein Ereignis eintreten lassen, wenn die Bedingung nicht wahr ist, was der Fall ist, wenn das Feld leer bleibt. Das Zeichen für den logischen Operator NOT ist das Ausrufezeichen. Der Wert der Bedingung wird "umgedreht": aus true wird false und aus false wird true. Durch die if-Anweisung in Kombination mit dem Setzen des Ausrufezeichens vor die Variable wird somit der Ausdruck true, wenn kein Text in der Variablen gespeichert ist. Dadurch klappt dann wieder die gewünschte Anweisung, die ja ausgeführt wird, wenn die Bedingung wahr ist.

  • 5. In die nächsten Zeilen schreiben Sie analog:
if (!$nachname) {echo ='Bitte geben Sie Ihren Nachnamen ein<br>';}
if (!$email) {echo ='Bitte geben Sie Ihre E-Mail-Adresse ein<br>';}
  • 6. Sie könnten in der Klammer jetzt auch noch kombinieren, d.h. die Variablen verketten, und für entsprechende Meldungen sorgen, wenn mehr als ein Feld nicht ausgefüllt wurde. Dann hieße es beispielsweise:
if (!$vorname AND !$nachname) {echo='Bitte geben Sie Ihren Vor- und Nachnamen ein<br>';}
  • 7. Nach diesen ersten if-Anweisungen folgen die if-Bedingungen, mit denen ausgedrückt wird, dass, abhängig von dem Votum in der Auswahlliste, bestimmte Meldungen erscheinen sollen, sofern alle Felder ausgefüllt wurden. Sie sehen im Code, dass hierfür AND-Verknüpfungen verwendet wurden.

Nach den if-Anweisungen schließen Sie den PHP-Teil und dann den Body-Container und HTML.

page 128

Einträge in den Formularfeldern stehen lassen

Wenn Sie das Script weiter perfektionieren möchten, können Sie nun noch dafür sorgen, dass die Eingaben nach dem Abschicken in den Formularfelder angezeigt bleiben. Das hätte für den User den Vorteil, dass er, sofern er das Formular versehentlich mit einem Leerfeld abschickt, nicht noch einmal alles eingeben muss.

Sie erreichen dies damit, dass Sie den Formularelementen einen value zuweisen, mit dem der jeweilige Eintrag ausgegeben wird. Dies sind in dem Fall die Variablen, die den jeweiligen Inhalt der Felder enthalten. Setzen Sie den Cursor also in das erste Formularelement nach name=vorname und schreiben Sie:

Value="<?php echo $vorname;?>"

Die weiteren Formularelemente ergänzen Sie dann analog.

Damit haben Sie fürs Erste genug an dem Programm-Code gebastelt. Speichern Sie die Datei, aber denken Sie daran, die Datei unter dem Namen zu speichern, den Sie als Wert des Attributs action angegeben haben. Wenn Sie den obigen Tipp berücksichtigt haben, sorgt PHP automatisch dafür, dass die Datei sich selbst aufruft. Sie sehen in Code, dass wir die Variable $PHP_SELF verwendet haben.

<html>
<head>
<title>Kontaktformular</title>
</head>
<body>
<form action="<? echo $PHP_SELF; ?>" method=post>
Vorname
<br>
<input type=Text name="vorname" value="<?php echo $vorname;?>" size=20>
<br>
Nachname
<br>
<input type=Text name="nachname" value="<?php echo $nachname;?>" size=20><p>
E-Mail
<br>
<input type=text name="email" value="<?php echo $email;?>" size=30>
<p><h4>Wie hat Ihnen das Spiel gefallen?</h4><p>
<select size=1 name="rank">
<Option value="keine Angabe">keine Angabe</option>
<Option value="sehr gut">sehr gut</option>
<Option value="gut"> gut</option>
<Option value="nicht so gut">nicht so gut</option>
</select>
<input type=submit name="submit" value="abschicken"></form>
<?php
echo "Ihr Vorname ist
<br>
$vorname
<br>";
echo "Ihr Nachname ist
<br>
$nachname<br>";
echo "Ihre E-Mail-Adresse ist
<br>
$email<br>";
echo "Ihre Note für unser Spiel ist
<br>
$rank<p>";
if (!$vorname) {echo 'bitte geben Sie einen Vornamen ein<br>';}
if (!$nachname) {echo 'bitte geben Sie Ihren Nachnamen ein<br>';}
if (!$email) {echo 'bitte geben Sie Ihre E-Mail-Adresse ein<p>';}
if ($vorname AND $nachname AND $email AND $rank=="keine Angabe") {echo "<b>Vielen Dank und bis bald</b>";}
if ($vorname AND $nachname AND $email AND $rank=="sehr gut") {echo "schön, dass Ihnen das Spiel gefallen hat";}
if ($vorname AND $nachname AND $email AND $rank=="gut") {echo "schön, dass Ihnen das Spiel gefallen hat";}
if ($vorname AND $nachname AND $email AND $rank=="nicht so gut") {echo "schade, dass Ihnen das Spiel nicht gefallen hat";}
?>
</body>
</html>

Das Script testen

Testen Sie nun das Script, indem Sie es in Ihrem Browser öffnen. Sie erhalten, ersichtlich in Bild, das Formular, die Feedback-Meldungen und darunter die Aufforderungen, die Felder auszufüllen (da sie beim Aufruf der Seite naturgemäß alle leer sind). Wir gehen mal davon aus, dass Sie sich die Seite zu Recht etwas anders vorgestellt haben. Sie müssen also noch etwas mehr an dem Script feilen.

kontaktformular_05

Auf jeden Fall soll der Besucher nicht sofort mit den Meldungen konfrontiert werden, seinen Namen etc. einzugeben. Hier gibt es eine Lösung. Zunächst können Sie aber testen, ob die eingebauten Fehlermeldungen klappen. Füllen Sie die Felder aus bis auf eins, in das Sie nichts eingeben, wählen Sie eine Option im Auswahlfeld und klicken Sie auf abschicken. Sie müssten nun eine entsprechende Meldung erhalten.

Welche Werte werden bei nicht ausgefüllten Formularelementen übertragen?

Die Frage, was eigentlich übermittelt wird, wenn leere Formularfelder abgeschickt werden, lässt sich pauschal nicht beantworten, da dies je nach Art des Formularelements variiert. Ein kurzer Überblick:

text/hidden/textarea: Wird nichts in das Textfeld eingetragen, existiert zwar die entsprechende Variable, aber ihr ist kein Wert zugewiesen.

checkbox/radio: Wird kein Wert mit Hilfe des value-Attributs gesetzt, wird on übertragen, sowie die checkbox/radio-Elemente aktiviert werden. Wird das Element nicht aktiviert, wird nichts übertragen, auch der Variablenname nicht.

kontaktformular_06

In dem Array $HTTP_POST_VARS gibt es in diesem Fall kein Element mit dem Namen der checkbox/radio-Elemente.

Meldungen unterdrücken

Öffnen Sie gegebenenfalls erneut das PHP-Script. Der Trick, die Meldungen zu unterdrücken, damit sie beim Aufruf der Seite nicht angezeigt werden, ist ein Hilfsfeld mit dem Typ hidden und einem beliebigen Wert. Mit dem Wert des Feldes können Sie eine if-Anweisung schreiben, über die geprüft wird, ob das Formular bereits abgeschickt wurde. Sie müssen also den <form>-Container um folgende Zeile ergänzen:

<input type=hidden name=sent value=1>

Gleich nach dem Öffnen des PHP-Teils beginnen Sie die if-Bedingung

if ($sent==1){

Diese Bedingung endet mit der geschweiften Klammer nach den if-Anweisungen für die Meldungen, dass bestimmte Eingaben fehlen, also vor dem Ende des PHP-Teils. Speichern Sie Ihr Script nach diesen Ergänzungen ab und rufen Sie es erneut auf. Sie dürften jetzt nur ein leeres Formular erhalten, da Sie mit der Variablen $sent gesagt haben: Gib nur Meldungen aus, wenn das Formular abgeschickt wurde.

Die Reihenfolge des Scripts umkehren

Die Seiten sind immer noch nicht ganz nach Wunsch. Als störend empfinden Sie wahrscheinlich, dass man nun - durch die Kombination von HTML mit dem PHP-Teil - ständig das Formular vor Augen hat. Ansprechender wäre es, wenn das Formular nur erscheint, um es auszufüllen oder um Fehler zu beheben und die Meldungen auf einer Seite ohne die Formularfelder (so wie es eingangs war). Diesem Problem können Sie zu Leibe rücken, indem Sie zunächst die Reihenfolge umkehren und den PHP-Teil an den Anfang des Scripts setzen, den PHP-Teil dann beenden und den HTML-Teil beginnen.

Dadurch können Sie dann gleich zu Beginn die Programmzeilen für das Feedback und die if-Befehle für die Fehlermeldungen in eine if-Anweisung stecken mit der Prüfbedingung if(sent==1), mit der Folge, dass die Rückmeldungen als auch die Fehlermeldungen nur angezeigt werden, wenn das Formular abgeschickt wurde. Dann müssen Sie auch den gesamten Formularteil - also von <form action=... > bis </form> - in eine if-Anweisung setzen, damit er nur angezeigt wird, wenn das Formular noch nicht abgeschickt wurde, also $sent noch nicht existiert (if(!sent).

Beachten Sie, dass der Block der if-Anweisung auch den Teil des Formulars beinhaltet (obwohl der PHP-Teil beendet wurde). Deshalb muss nach </form> die if-Anweisung geschlossen werden, vergessen Sie also die schließende Klammern dieses Blocks nicht und denken Sie auch daran, diese Klammer vorher wieder als PHP zu kennzeichnen.

<html>
<head>
<title>Kontaktformular</title>
</head>
<body>
<?php
if ($sent==1){
echo "Ihr Vorname ist
<br>
$vorname<br>";
echo "Ihr Nachname ist
<br>
$nachname<br>";
echo "Ihre E-Mail-Adresse ist
<br>
$email<br>";
echo "Ihre Note für unser Spiel ist
<br>
$rank<p>";
if (!$vorname) {echo 'Bitte geben Sie einen Vornamen ein<br>';}
if (!$nachname) {echo 'Bitte geben Sie Ihren Nachnamen ein<br>';}
if (!$email) {echo 'bitte geben Sie Ihre E-Mail-Adresse ein<p>';}
if ($vorname AND $nachname AND $email AND $rank=="keine Angabe")
{echo "<b>Vielen Dank und bis bald</b>";}
if ($vorname AND $nachname AND $email AND $rank=="sehr gut")
{echo "schön, dass Ihnen das Spiel gefallen hat";}
if ($vorname AND $nachname AND $email AND $rank=="gut")
{echo "schön, dass Ihnen das Spiel gefallen hat";}
if ($vorname AND $nachname AND $email AND $rank=="nicht so gut")
{echo "schade, dass Ihnen das Spiel nicht gefallen hat";}
}
if (!$sent){
?>
<form action="<?php echo $PHP_SELF; ?>" method=post>
<input type=hidden name=sent value=1>
Vorname
<br>
<input type=Text name="vorname" value="<?php echo $vorname;?>" size=20>
<br>
Nachname
<br>
<input type=Text name="nachname" value="<?php echo $nachname;?>" size=20><p>
E-Mail
<br>
<input type=text name="email" value="<?php echo $email;?>" size=30>
<p><h4>Wie hat Ihnen das Spiel gefallen?</h4><p>
<select size=1 name="rank">
<Option value="keine Angabe">keine Angabe</option>
<Option value="sehr gut">sehr gut</option>
<Option value="gut"> gut</option>
<Option value="nicht so gut">nicht so gut</option>
</select>
<input type=submit name="submit" value="abschicken">
</form>
<?php }
?>
</body>
</html>

Info

In vielen Beschreibungen zu PHP wird die Submit-Schaltfläche verwendet, um zu testen, ob das Formular bereits gesendet wurde oder nicht. Dieses Verfahren spart das versteckte Eingabefeld, allerdings können Sie mit dem versteckten Eingabefeld geschickter durch das Script navigieren, wenn Sie z.B. Informationen zusammentragen möchten, die Sie auf mehreren Seiten in unterschiedlichen Formularen vom Surfer erfragen oder bei fehlerhafter Eingabe das Formular erneut anzeigen möchten. Da Sie beliebige Werte festlegen können und nicht nur auf true und false beschränkt sind, können Sie mehrere Formulare nacheinander anzeigen lassen.

Auch dieses Script ist noch nicht ganz das Gelbe vom Ei, da das Formular nun nicht mehr angezeigt wird, wenn Felder nicht ausgefüllt wurden. Dies liegt daran, dass $sent nach dem Abschicken des Formulars immer 1 ist, das Formular aber nur angezeigt wird, wenn $sent nicht existiert. Damit das Formular bei Fehlern wieder auftaucht, muss $sent gelöscht werden, sodass die if-Bedingung (!$sent) zum Anzeigen des Formulars wieder zutrifft.

Eine Variable löschen Sie mit dem Befehl unset($Variablenname)

Diesen Befehl müssen Sie also im Falle eines Fehlers/nicht ausgefüllten Feldes verwenden. Schreiben Sie in den if-Zweig der drei Fehlerprüfungen die zusätzliche Zeile:

unset($sent);

Eine Fehlerprüfung sieht dann folgendermaßen aus:

if (!$vorname)
{
echo 'Bitte geben Sie einen Vornamen ein
<br>';
unset($sent);
}

Info

int unset(mixed variablen) Die Funktion löscht eine Variable oder ein Array.

Strings bearbeiten

Die in den Feldern eingegebenen Daten interpretiert PHP als String-Variablen, also als aus alphanumerischen Zeichen bestehenden Text. Strings - oder Zeichenketten - können weiter bearbeitet werden, beispielsweise um Fehlern oder Missgeschicken, die bei der Eingabe von Text in ein Formularfeld entstanden sind, zu begegnen.

eraser_orange 128

Leerstellen entfernen

Es passiert beispielsweise recht häufig, dass überflüssige Leerstellen mitgeschickt werden, die dann entweder die Folgeseite merkwürdig aussehen lassen, vor allem aber bei der Sammlung der Daten in einer Datenbank stören würden. Deutlich wird das Problem, das hier angesprochen wird, wenn Sie sich vorstellen, dass ein Password mit überflüssigen Leerstellen eingegeben wird und dann logischerweise nicht mehr stimmt, wenn es ohne Leerstelle eingegeben wird. Aus diesen und anderen Gründen ist es ratsam, diese Leerstellen per PHP-Befehl zu entfernen. Ins Spiel kommt dazu die Funktion trim() mit der Leerstellen am Anfang und Ende des Strings abgeschnitten werden. Sie können die Funktion in das vorhandene Script einbauen:

  • 1. Setzen Sie den Cursor im PHP-Teil an den Anfang des if-Zweiges (if ($sent==1) {) direkt hinter der öffnenden geschweiften Klammer in eine neue Zeile und geben Sie hintereinander ein:
$vorname=trim($vorname);
$nachname=trim($nachname);
$email=trim($email);

Info

string trim(string dertext) Die Funktion entfernt überflüssige Zeichen am Anfang und Ende einer Zeichenkette (dertext).

Damit weisen Sie den Variablen neue Werte zu, die von den möglichen Leerstellen am Anfang und Ende befreit sind. Hierbei ist in diesem Beispiel zu beachten, dass zunächst mit trim($vorname) die Variable $vorname mit noch vorhandenen Leerstellen dem Befehl trim zugeführt wird. Anschließend wird der Variablen $vorname das Ergebnis des Befehls trim zugewiesen, sodass danach in der Variablen $vorname die Leerstellen am Anfang und Ende nicht mehr vorhanden sind.

Strings kombinieren

Auch wenn es für das eben durchgespielte Beispiel nicht unbedingt erforderlich ist, möchten wir an dieser Stelle eine weitere Möglichkeit zeigen, wie Sie Strings bearbeiten bzw. manipulieren können. Strings lassen sich auf einfache Art zusammensetzen, um so neue Variablen festzulegen. Die Schreibeweise zur Kombination von Strings ist:

$neuerstring=$vorhandener_string1.$vorhandener_string2;

In dem Beispiel wäre es denkbar, aus den beiden Strings $vorname und $nachname eine neue Variable zu generieren, sodass darüber der Vorname und der Nachname zusammen aufgerufen und gespeichert werden können.

Um die Variable zu erzeugen, geben Sie mit einem selbst gewählten neuen Variablen-Namen einfach ein:

$ganzername=$vorname." ".$nachname;

Die Elemente werden jeweils durch den Punkt getrennt. Der Punkt ist das Textverkettungszeichen oder der Verkettungsoperator. Die Anführungszeichen in der Mitte kleiden die Leerstelle ein, die dafür sorgt, dass der Vorname und der Nachname nicht zusammenkleben. Auf diese Weise könnten Sie das Script ergänzen, um den Besucher mit Vornamen und Nachnamen anzusprechen. Dazu setzen Sie die Variable wie eben beschrieben und schreiben dann beispielsweise jeweils in den Block der if-Anweisung:

if ($vorname AND $nachname AND $email AND $rank=="sehr gut") {echo "schön, dass Ihnen das Spiel gefallen hat. Danke, $ganzername";}

paperplane_yellow 128

Die Daten als E-Mail verschicken

In diesem Abschnitt erklären wir nun wie angekündigt, wie Formulardaten per E-Mail verschickt werden. Für diese Aufgaben müssten Sie eigentlich nicht unbedingt PHP bemühen. Wie viele von Ihnen wissen, können Sie auch im HTML-Formular als action mailto:Ziel angeben. Diese Methode öffnet den E-Mail Client des Surfers mit einer neuen Nachricht, in der Ihre E-Mail-Adresse bereits als Empfänger und die Daten des Formulars in der Nachricht eingetragen sind.

Wir wollen diesen Weg hier aber nicht weiter verfolgen, weil diese Methode bei vielen Usern nicht besonders beliebt ist, denn beim Verschicken der E-Mail per Client wird die "echte", eventuell private E-Mail-Adresse, automatisch mit übertragen - ein Vertrauensvorschuss, den viele Surfer nicht bereit sind zu leisten. Mit PHP können Sie die Formulardaten direkt per E-Mail verschicken. Der benötigte Befehl trägt den vielversprechenden Namen mail. Allgemein ausgedrückt lautet der Befehl:

mail(Empfänger, Betreff, Nachricht, Header)

Die einzelnen Argumente des Befehls bedürfen eigentlich keiner großen Erklärung, aber einige Informationen sind vermutlich hilfreich.

Argument Bedeutung
Empfänger E-Mail-Adresse des Empfängers als String. Mehrere E-Mail-Adressen können per Komma getrennt direkt aneinander geschrieben werden.
Betreff Betreffzeile, die im E-Mail-Client angezeigt werden soll (als String).
Nachricht Der Text der E-Mail als String. Hier sind die unterschiedlichen Formatierungsmöglichkeiten zu beachten, die die Mail-Formate (HTML, Text) bieten.
Header In diesem Bereich geben Sie der Nachricht zusätzliche Informationen mit auf den Weg, z.B. teilen Sie dem E-Mail-Client mit Content-Type: text/html mit, dass eine Nachricht im HTML-Format folgt (Content-Type: text/plain steht hingegen für reine txt-Nachrichten). Mit Importance: High aktivieren Sie die Kennzeichnung des Mail-Clients für wichtige Nachrichten, sofern der verwendete E-Mail-Client diese Eigenschaft unterstützt.

Damit Sie die Formulardaten an sich selbst per E-Mail senden können, müssen Sie sich also zunächst die Nachricht im gewünschten Format "zusammenbauen", den Header erzeugen und anschließend die Mail auf den Weg bringen.

Um die Nachricht im HTML-Format zu verschicken, muss das vorhandene Script demnach um folgende Zeilen erweitert werden:

$message="<html><body>";
$message.="<p>Vorname: ";
$message.=$vorname;
$message.="<br>Nachname:";
$message.=$nachname;
$message.="<br>E-Mail.";
$message.=$email;
$message.="<br><b>";
$message.=$rank;
$message.="</b></p></body></html>";

Soweit der mit Hilfe von HTML formatierte Text der E-Mail-Nachricht. Jetzt folgt der Header, der sich auf einen Eintrag beschränkt: dem E-Mail-Client mitzuteilen, dass eine HTML-Mail folgt. Weitere Angaben könnten folgen, wobei wir Ihnen empfehlen, jede Angabe mit Hilfe von \n - dem Zeichen für den Carriage Return - Zeile für Zeile aufzubauen:

$header="\n Content-Type: text/html";

Nun fehlt noch der Versand der E-Mail. Das ist, so gut vorbereitet, ein einfacher Einzeiler:

mail("ihreEMail@Adresse.de", "Eine E-Mail von meiner Webseite", $message, $header);

Die Mail soll aber natürlich nur dann verschickt werden, wenn die Felder des Elements auch ausgefüllt sind. Deswegen bauen wir hier wieder eine entsprechende if-Anweisung ein. Das Scriptfragment zum Versenden der E-Mail sieht dann folgendermaßen aus:

If($vorname AND $nachname AND $email)
{
$message="<html><body>";
$message.="<p>Vorname:";
$message.=$vorname;
$message.="<br>Nachname:";
$message.=$nachname;
$message.="<br>E-Mail.";
$message.=$email;
$message.="<br><b>";
$message.=$rank;
$message.="</b></p></body></html>";
$header="\n Content-Type: text/html";
mail("ihreEMail@Adresse.de", "Eine E-Mail von meiner Webseite", $message, $header);
}

Info

bool mail(string to, string betreff, string nachricht [, zusätzlicher header])

Funktion zum Versenden von E-Mails. Die Klammer nimmt Argumente auf, die den Empfänger (to), den Betreff und die Nachricht angeben. Optional ist der Header für zusätzliche Informationen.

Die Funktion mail gibt false zurück, wenn ein Fehler beim Versand der Mail aufgetaucht ist. Diese Eigenschaft lässt sich - mit einer weiteren kleinen if-Anweisung kombiniert - dazu verwenden, den Surfer über den Erfolg oder Misserfolg der Datenübertragung zu informieren.

Info

Die Funktion mail gibt kein false zurück, wenn die E-Mail-Adresse des Empfängers nicht existiert und die Mail deswegen nicht zugestellt werden konnte. False wird nur ausgegeben, wenn die Übergabe an das auf dem Server installierte Mailprogramm - in den meisten Fällen Sendmail -, das sich um den Versand der Mail kümmert, nicht ordnungsgemäß funktionierte.

Die Zeile für den Versand der Mail sieht dann folgendermaßen aus.

if(mail("ihreEMail@Adresse.de", "Eine E-Mail von meiner Webseite", $message, $header))
{
echo "Ihre Informationen wurden übermittelt";}
else
{
echo "Die Informationsübermittelung ist fehlgeschlagen, bitte versuchen Sie es später noch einmal.";}

Wenn Sie dem User nach einer fehlgeschlagenen Übermittlung wieder das Formular anzeigen möchten, müssen Sie das Script nochmals um eine Kleinigkeit erweitern. Ergänzen Sie den obigen else-Zweig um eine Zeile, die die Variable $sent löscht:

Unset($sent);

Das gesamte Script sieht dann folgendermaßen aus (da das endgültige Script mittlerweile relativ kompakt ist, finden Sie weitere Erläuterungen innerhalb des Scripts in Form von Kommentaren, also in den Zeilen mit den vorangestellten Schrägstrichen // bzw. <!- im HTML-Teil):

<html>
<head>
<title>Kontaktformular</title>
</head>
<body>
<?php
//Mit $sent==1 wird getestet,ob das Formular abgeschickt wurde
if ($sent==1)
{
//Ausgeben der eingegebenen Formulardaten
echo "Ihr Vorname ist
<br>
$vorname
<br>";
echo "Ihr Nachname ist
<br>
$nachname
<br>";
echo "Ihre E-Mail-Adresse ist
<br>
$email<br>";
echo "Ihre Note für unser Spiel ist
<br>
$rank<p>";
//Testen, ob alle Felder ausgefüllt wurden
//und gegebenenfalls Fehlermeldungen ausgeben
//und $sent löschen, damit das Formular erneut angezeigt wird
if (!$vorname) {echo 'Bitte geben Sie einen Vornamen ein<br>';
unset($sent);}
if (!$nachname) {echo 'Bitte geben Sie Ihren Nachnamen ein<br>';
unset($sent);}
if (!$email) {echo 'Bitte geben Sie Ihre E-Mail-Adresse ein<p>';
unset($sent);}
//Ausgeben der Texte für die unterschiedlichen Bewertungen des Spiels
if ($vorname AND $nachname AND $email AND $rank=="keine Angabe") {echo "<b>Vielen Dank und bis bald</b>";}
if ($vorname AND $nachname AND $email AND $rank=="sehr gut") {echo "schön, dass Ihnen das Spiel gefallen hat";}
if ($vorname AND $nachname AND $email AND $rank=="gut") {echo "schön, dass Ihnen das Spiel gefallen hat";}
if ($vorname AND $nachname AND $email AND $rank=="nicht so gut") {echo "schade, dass Ihnen das Spiel nicht gefallen hat";}
//Testen, ob alle Felder ausgefüllt wurden.
//Wenn ja, die E-Mail vorbereiten und verschicken
If($vorname AND $nachname AND $email)
{
//Den Nachrichtentext der E-Mail für eine HTML-Mail zusammenbauen $message="<
html>
<body>";
$message.="<p>Vorname:";
$message.=$vorname;
$message.="<br>Nachname:";
$message.=$nachname;
$message.="<br>E-Mail.";
$message.=$email;
$message.="<br><b>";
$message.=$rank;
$message.="</b></p></body></html>";
//Den Header der E-Mail erstellen
$header="\n Content-Type: text/html";
//Die E-Mail versenden.
//Wenn kein Fehler auftritt, wird eine Erfolgsmeldung ausgegeben,
//andernfalls eine Fehlermeldung
if(mail("ihreEMail@Adresse.de", "Eine E-Mail von meiner Webseite", $message, $header))
{
//Erfolgsmeldung ausgeben
echo "Ihre Informationen wurden übermittelt";}
else
{
//Fehlermeldung ausgeben
echo "Die Informationsübermittelung ist fehlgeschlagen, bitte versuchen Sie es später noch einmal.";
//$sent löschen, damit das Formular erneut angezeigt wird unset($sent);}}
//schließende Klammer für If($vorname AND $nachname AND $email)}
//schließende Klammer für If($sent==1)
//Das Formular anzeigen, wenn $sent nicht existiert.
//Dies ist der Fall, wenn die Seite das erste Mal aufgerufen wird,
//oder wenn $sent oben bei einem Fehler gelöscht wird.
if(!$sent)
{
?>
<form action="<?php echo $PHP_SELF; ?>" method=post>
<!-Verstecktes Feld um zu Testen,->
<!-ob das Formular aufgerufen werden soll oder nicht->
<input type=hidden name=sent value=1>
Vorname
<br>
<input type=Text name="vorname" value="<?php echo $vorname;?>" size=20>
<br>
Nachname
<br>
<input type=Text name="nachname" value="<?php echo $nachname;?>" size=20><p>
E-Mail
<br>
<input type=text name="email" value="<?php echo $email;?>" size=30>
<p><h4>Wie hat Ihnen das Spiel gefallen?</h4><p>
<select size=1 name="rank">
<Option value="keine Angabe">keine Angabe</option>
<Option value="sehr gut">sehr gut</option>
<Option value="gut"> gut</option>
<Option value="nicht so gut">nicht so gut</option>
</select>
<input type=submit name="submit" value="abschicken">
</form>
<?php
}
//schließende Klammer für If(!$sent)
//Wichtig: Diese Klammer muss in einem php-Teil stehen
?>
</body>
</html>