Skip to content

Validierung von Eingaben im Kontaktformular

Meine Homepage hat noch ein Kontaktformular. Selbstverständlich findet sich auf derselben Seite auch meine Mailadresse (samt GPG-Key), und man sollte annehmen, dass das der übliche Weg zur Kontaktaufnahme wäre, aber überraschend viele Nachrichten erreichen mich dann doch noch über das Kontaktformular. Dafür mag es verschiedene Gründe geben: der Mailclient auf dem Arbeitsrechner (oder dem Smartphone) hat vielleicht kein Profil mit der gewünschten Absenderadresse - oder für den Absender ist “E-Mail” gleichbedeutend mit “GMail” oder einem anderen webbasierten Dienst, d.h. es wird gar kein Mailprogramm mehr verwendet. Sei dem, wie dem sei - das Kontaktformular wird (trotz Recaptcha) durchaus genutzt, und ab und an verschluckte es sich an unerwarteten Eingaben. Gerne genommen war beispielsweise ein Komma im Eingabefeld für den Namen (“Müller, Egon”). Da das Formular die Eingabe einfach 1:1 in das From:-Feld übernommen hat, fand sich da dann etwas wie

Müller, Egon <absender@domain.example>

Das aber gefällt der Technik nicht, denn ein , trennt im From: oder To: mehrere Absender/Adressaten voneinander. Soll im Namen ein Komma vorkommen, muss der gesamte Name in " gesetzt werden.

Außerdem fiel mir bei dieser Gelegenheit auf, dass ich die Eingaben insgesamt nicht wirklich validiere. Zeit, das zu ändern.

Und während ich noch überlegte, wie man noch einmal am besten eine Mail-Adresse validiert (ein wirklich nicht einfaches Unterfangen, aber mit Regular Expressions möglich, wenn man keine Kommentare akzeptiert), fiel mir wieder ein, dass ich so etwas doch schon einmal gebastelt hatte. Und richtig: da lag eine bereits halb vergessene PHP-Klasse herum, die Validierungsfunktionen bietet, u.a. die syntaktische Validerung einer Mailadresse. Und außerdem kann sie eine Eingabe auch gegen einen beliebigen regulären Ausdruck validieren.

Also prüft das Kontaktformular jetzt, ob die E-Mail-Adresse syntaktisch gültig ist (weiterhin aber nicht, ob es diese Adresse gibt - was zumindest mit hoher Wahrscheinlichkeit möglich ist - oder ob sie dem Absender des Formulars gehört - was nicht möglich ist), wobei fast alle gültigen und jedenfalls alle real anzunehmenden Mailadressen akzeptiert werden, und es testet auch, ob der Absendername eines der Zeichen enthält, die nur zulässig sind, wenn der Name insgesamt in " steht. Dabei wird nicht jeder denkbare Fall abgefangen, aber immerhin die naheliegenden. Das ist schon einmal ein deutlicher Schritt nach vorne (und war nicht wirklich Aufwand, weil ich den Großteil der Vorarbeit bereits geleistet hatte).

[Nachträglich veröffentlicht im April 2022.]

Trackbacks

Keine Trackbacks

Kommentare

Ansicht der Kommentare: Linear | Verschachtelt

Noch keine Kommentare

Kommentar schreiben

HTML-Tags werden in ihre Entities umgewandelt.
Markdown-Formatierung erlaubt
Standard-Text Smilies wie :-) und ;-) werden zu Bildern konvertiert.
BBCode-Formatierung erlaubt
Gravatar, Identicon/Ycon Autoren-Bilder werden unterstützt.
Formular-Optionen
tweetbackcheck