Ein Kontaktformular mit PHP

Anhand dieses Kontaktformulars möchten wir auf das objektorientierte Programmierparadigma eingehen und aufzeigen, wie assoziative Arrays verwendet werden können. Am Ende haben wir ein Kontaktformular, das leicht angepasst und in die eigene Website eingebaut werden kann.

Dieses Kontaktformular besteht aus drei Dateien:

  • kontakt.php: eine PHP-Datei, die ein Formular ausgibt, das ausgefüllt und abgesendet werden kann
  • danke.php: diese Datei verarbeitet die Eingaben und versender E-Mails.
  • config.frm.php: Diese Konfigurationsdatei macht das Ganze etwas ungewöhnlich.
  • Alle drei Dateien können Sie hier gezippt herunterladen.

In der Konfigurationsdatei werden zwei assoziative Arrays erzeugt, die Konfigurationsdaten und Texte enthalten. Damit kann das Skript mit wenig Aufwand angepasst und sogar in andere Sprachen übersetzt werden, ohne dass man Template- oder Logik antasten muss.

Was ist eigentlich ein assoziatives Array?

Ein assoziatives Array ist ein Datenfeld, bei dem die Felder sprechende Namen haben. In unserer Konfigurationsdatei werden alle Felder im Klartext bezeichnet, zum Beispiel:

//Empfänger-E-Mail-Adresse. Muss gültig sein.
'sReceiver' => 'mail@example.org', //[x]

Diese Feldnamen kann man sich gut merken und daher auch schnell verarbeiten, also in Formularen aufrufen oder in anderen Skripten darauf zugreifen.

Unser Kontaktformular bekommt zwei dieser Arrays, im ersten, genannt $aImvaFrmSettings, werden die Einstellungen festgelegt. Das sind alle Adressen, Ziele und Betriebsparameter.

Im zweiten Array, genannt $aImvaTexts, legen wir die Texte fest, die man zu sehen bekommt, wenn man das Kontaktformular benutzt. Wer ein anderes Vokabular bevorzugt, kann die Werte dieser Felder bearbeiten, natürlich ist es auch möglich, eine ganz andere Sprache zu hinterlegen.


Klassen und Funktionen

Im Betrieb müssen diese Parameter aus dem Array abgefragt werden können. Natürlich könnte man jetzt in jeder betroffenen Datei per Include die Konfigurationsdatei einbinden und direkt auf die Arrays zugreifen. Der Übung halber lösen wir das aber mit einer Klasse, bei uns imvaFrmSettings, und ihre Funktionen. Die Klasse wird dann als Objekt verwendbar und wir können die Funktionen mit übergebenen Parametern (den Namen unserer Datenfelder) abfragen.

Auf die Klasse zugreifen

Unsere Klasse befindet sich ja in einer eigenen Datei, deshalb müssen wir diese noch einbinden, um die Klasse als Objekt verwenden zu können.

include('./config.frm.php');
$oMulti = new imvaFrmSettings;

$oMulti ist unser Objekt. Mit der Angabe des Funktionsnamens können wir auf eine Funktion zugreifen, etwa

$oMulti->text();

Da die Funktion text() aber einen Parameter erfordert, würde das in unserem Beispiel so nicht funktionieren. Der Parameter wird in der Klammer mitgegeben. Mögliche Parameter sind alle Feldnamen des Arrays in text().

$oMulti->text('sLabelName');

Dies gibt den Wert zurück, der im Array mit sLabelName definiert wurde, nämlich „E-Mail-Adresse“.

Das Formular einbinden

Um das Kontaktformular verwenden zu können, benötigen Sie einen Webserver, der mindestens PHP5 ausführen kann. Außerdem muss mail verfügbar sein.

Um die Dateien auf den Server kopieren zu können, verbinden Sie sich mit FTP oder SCP damit.

Am besten legen Sie ein eigenes Verzeichnis für die Dateien an, beispielsweise /kontakt. Öffnen Sie als erstes die Datei config.frm.php und passen Sie sie an. Besonders wichtig sind die Felder sReceiver, sSender, sReturnLink, allesamt im Abschnitt „Einstellungen“.

Im Abschnitt „Texte“ sollten Sie Ihren Namen oder den Namen Ihrer Website ergänzen (anstelle von example.org), damit Sie und Ihre Besucher die Mails zuordnen können.

Kopieren Sie die Dateien nach /kontakt (beziehungsweise in das zuvor erstellte Verzeichnis).

Von ihrer bestehenden Website aus können Sie nun einen Link auf /kontakt/kontakt.php setzen, oder, viel besser, per PHP-Include einbinden.

Format

Das Formular ist nicht formatiert, da wir kein Stylesheet beigelegt haben. Sie können dies selbst tun. Die Datei kontakt.php besteht aus viel HTML-Code, den Sie selbst verändern oder so nutzen und die vorhandenen CSS-Klassen ansprechen können.


Detaillierte Einstellungen

iSendCopyToSender. Steht dieser Wert auf 1, wird eine Kopie der Nachricht an den Absender geschickt. Als Absender wird die in sSender hinterlegte Adresse verwendet. Sie muss nicht existieren, daher kann sSender auch einen erfundenen Wert bekommen (sehr beliebt: noreply@…).

iUseDebugger gibt an, ob zwecks Fehlersuche eingegebene Daten ausgegeben werden sollen. Steht dieser Wert auf 1, werden keine Mails versandt. Im produktiven Betrieb darf dieser Wert nicht 1 sein.

Kontaktformular herunterladen.


Dieser Beitrag wurde unter Arrays, Klassen, objektorientiert abgelegt und mit , , , , , , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.