Kontaktformular
Vorüberlegung
In diesem Beispiel nutzen wir ein gewöhnliches HTML-Formular mit folgenden Komponenten:
- 2 Eingabefelder
- 2 "Radio"-Felder und
- 1 Auswahlfeld.
Was im Formular abgefragt wird:
- Name
- E-Mailadresse
- Registrierter Benutzer: Ja/Nein
- Wie findet ihr die Seite?
Das Formular
Das wichtigste ist das Eingabeformular. Wir geben unseren Feldern folgende Namen:
- Abfrage des Namens: "name"
- Abfrage der E-Mail: "EMail"
- Reg. Benutzer (Ja/Nein): "user"
- Meinung zur Seite: "meinung"
ZU BEACHTEN: Auf Groß- und Kleinschreibung wird in PHP geachtet!!!
So, fangen wir nun an. Das Formular nennen wir form.html. Hier der Quelltext:
<head>
<title>Dateneingabe</title>
</head>
<body>
<h1 align="center">Meinungen</h1>
<p><form action="auswert.php" method="post">
Dein Name: <input name="name" size="20"><br>
E-Mail: <input name="EMail" size="20"><br>
Bist du einer unserer Benutzer? <input type="radio" name="user" value="Ja">Ja--- ---<input type="radio" name="user" value="Nein">Nein<br>
Wie findest du unsere Seite?<br>
<select name="meinung" size="1">
<option>Sehr gut
<option>Gut
<option>Befriedigend
<option>Ausreichend
<option>Mangelhaft
<option>Ungenügend
</select><br><br>
<input type="submit" value="Abschicken">
</form></p>
</body>
</html>
Und jetzt zum eigentlichen Kernteil: Der Auswertung
Auswertung mit PHP
Es ist wichtig, sich die Namen der Felder zu merken. In PHP werden diese als Variablen mit ihren Formularnamen eingesetzt.
Wir haben also jetzt folgende Variablen:
$name, $EMail, $user,
$meinung.
Wir könnten jetzt ganz einfach hergehen und sagen, unsere Auswertung besteht darin, dem Benutzer noch einmal zu zeigen,
was er eingegeben hat. Das sähe dann so aus:
echo "Ihr name ist ".$name.".<br>";
echo "Ihre E-Mailadresse lautet ".$EMail.".<br>";
echo "Sind Sie User? ".$user."<br>";
echo "Sie finden unsere Seite ".$meinung.".";
?>
Hat der Benutzer etwas eingegeben? - Die
if()-Funktion
Um zu prüfen, ob der Benutzer etwas eingegeben hat, nutzen wir eine if-Abfrage. if ist englisch und bedeutet soviel wie
WENN. Der Aufbau geht so:
if (Voraussetzung)
{
Anweisung;
}
In den runden Klammern wird abgefragt, was geprüft werden soll. In den geschwungenen Klammern stehen dann die
Anweisungen, die gemacht werden sollen, wenn die Voraussetzung erfüllt ist (true ergibt).
Es gibt noch die Möglichkeit, zu sagen, was sonst gemacht werden soll. Das geht dann mit dem
else-Befehl. else bedeutet sonst und kann noch mit if wieder in Verbindung gebracht werden
("sonst, wenn..."). Man kann Variablen mit anderem vergleichen. Dazu werden diese Befehle genutzt:
== (gleich)
!= (ungleich)
<= (kleiner/gleich)
>= (größer/gleich)
< (kleiner)
> (größer)
Zudem kann man zwei Anweisungen verbinden:
&& (UND)
|| (ODER)
Ein Beispiel:
$a = 7;
if ($a <= "3")
{
echo $a." ist kleiner oder gleich 3.";
}
else if ($a > "3" && $a <= "7")
{
echo $a." ist größer als 3 und kleiner oder gleich 7.";
}
else
{
echo $a." ist größer als 7.";
}
?>
Die ereg()-Funktion
ereg hilft dabei, zwei Dinge zu vergleichen. Wenn ich z.B. zwei Variablen habe und diese
vergleichen möchte, kann ereg() sehr hilfreich sein. Zuerst einmal brauche ich ein Muster,
das verglichen werden soll. Sinnvollerweise kann man daraus eine Variable machen. Mögliche Musterbefehle sind:
. | Jeder beliebige Buchstabe. |
^a | Stimmt überein mit einem String, der mit dem Zeichen beginnt, das nach dem "Dach" steht. |
a$ | Stimmt überein mit dem String, der mit dem Zeichen endet, das vor dem Dollarzeichen steht. |
a+ | Stimmt überein mit dem String, der mehrfach, mindestens aber einmal, vorkommt. |
a? | Stimmt überein mit dem String, der höchstens einmal auftritt. |
a* | Stimmt überein mit dem String, der beliebig häufig auftreten kann - auch keinmal. |
\n | Stimmt mit einer neuen Zeile überein |
a{2} | Stimmt überein mit einem String, der genau zweimal auftritt. |
a{1,} | Stimmt überein mit einem String, der mindestens einmal auftritt. |
a{1,3} | Stimmt überein mit einem String, der mindestens einmal und maximal dreimal auftritt. |
[0-9] | Eine beliebige Ziffer zwischen 0 und 9. |
Wenn die Zeichenkette abc zweimal vorkommt, reicht es nicht, abc{2} zu schreiben, sondern (abc){2}! Die Klammern werden hier nicht verglichen. Beispiel:
$muster = ".{2}l{2}.([0-9]){3}";
$a = ereg($muster, $variable);
echo $a;
$muster = ".{2}l{2}.([0-9]){3}";
if (ereg($muster, $variable))
{
echo "Das Muster stimmt mit der Variablen überein.";
}
else
{
echo "Das Muster stimmt nicht überein.";
}
Die Eingabeprüfung der E-Mailadresse
Die ereg()-Funktion ist jetzt nützlich. Will man prüfen, ob der Benutzer eine
gültige E-Mailadresse eingegeben hat, macht man das mit der ereg()-Funktion. Der Quelltext
im Bezug auf unsere Datei form.html wäre also:
$muster = "^[_a-zA-Z0-9-](\.{0,1}[_a-zA-Z0-9-])*@([a-zA-Z0-9-]{2,}\.){0,}[a-zA-Z0-9-]{3,}(\.[a-zA-Z]{2,4}){1,2}$";
if (ereg($muster, $EMail))
{
echo "E-Mailadresse OK.";
}
else
{
echo "E-Mailadresse ungültig.";
}
?>
Die mail()-Funktion
Wie oben schon erwähnt: es ist nicht sinnvoll, dem Benutzer anzuzeigen, was er eingegeben hat. Es wäre doch
viel sinnvoller, selber zu sehen, was die Benutzer von der eigenen Seite halten!!! Warum also keine E-Mail an sich selbst
verschicken? Der - glücklicherweise existierende - Befehl dazu ist mail(). Starten wir mal
mit einem Beispiel:
WICHTIG: Nicht alle Server unterstützen die mail()-Funktion! Da hilft nur ausprobieren.
Das gesamte Script
Nun wieder zu unserem Kontaktformular. Wir erstellen nun die Datei auswert.php und fassen unser erworbenes Wissen in dieser
einen Datei zusammen. Der Quellcode:
$muster = "^[_a-zA-Z0-9-](\.{0,1}[_a-zA-Z0-9-])*@([a-zA-Z0-9-]{2,}\.){0,}[a-zA-Z0-9-]{3,}(\.[a-zA-Z]{2,4}){1,2}$";
if ($user == "Ja")
{
$wort = "ein";
}
else
{
$wort = "kein";
}
if (ereg($muster, $EMail))
{
mail("[email protected]","Meinung zu meiner Homepage",$name." ist ".$wort." User und findet die Seite ".$meinung."!","From: ".$EMail);
}
else
{
echo "Die E-Mailadresse ist ungültig!";
}
?>