Formulareingaben überprüfen...
chris
- php
0 Eidgenosse0 Christian Seiler0 Daniel
Hallo zusammen
Ich habe ein Formular erstellt, worin der User diverse Daten eintragen kann. Nun möchte ich die Daten überprüfen, bevor diese an eine E-mail-Adresse übermittelt werden. Doch wie stell ich das an? Ich hab da schon einige Varianten gesehen, konnte mir aber nicht viel darunter vorstellen. Der Test ob ein Feld ausgefüllt wurde krieg ich schon hin. Nun möchte ich aber sicherstellen, dass gewisse Felder nur Buchstaben oder nur Zahlen enthalten. Zudem kommen noch Spezialfälle, wie die Überprüfung einer E-mail Adresse oder die Angabe einer Telefonnummer, wo z.B. nur Zahlen, -, /, und Leerschläge erlaubt sein sollen, hinzu. Kann mir da jemand ne gute Erklärung geben wie ich da am besten vorgehe? Vielen Dank bereits im Voraus!
Gruss Chris
Hallo Chris,
nutze (serverseitig) Reguläre Ausdrücke. Erklärungen hierzu findest Du in SelfHTML.
Gruß
Eidgenosse
Hallo Chris,
Kann mir da jemand ne gute Erklärung geben wie ich da am besten vorgehe? Vielen Dank bereits im Voraus!
Was Du brauchst, sind reguläre Ausdrücke:
http://de3.php.net/manual/de/function.preg-match.php
http://de3.php.net/manual/de/pcre.pattern.syntax.php
http://de3.php.net/manual/de/pcre.pattern.modifiers.php
Um jetzt mal ein Beispiel zu machen:
Wenn Du wissen willst, ob die Eingabe eine Zahl ist, dann kannst Du so vorgehen:
if (preg_match ("/[1]+$/", $_POST["eingabefeld"])) {
// ist eine Zahl
} else {
// ist keine
}
Das, was sich hier ändert bei unterschiedlichen Überprüfungen, ist der reguläre Ausdruck: Hier ist er [2]+$
Wenn Du überprüfen willst, ob das ganze eine _deutsche_ Postleitzahl ist (rate ich von ab, Leute können im Ausland leben) dann ist folgender Ausdruck für Dich interessant: [3]{5}$
Zur Telefonnummer: [4]+$ (nach Deinen Kriterien jetzt, ich könnte mir noch + und Klammern vorstellen; Achtung: / hat eine besondere Bedeutung und von daher musst Du das /-Zeichen mit \ maskieren)
Zur Email: http://aktuell.de.selfhtml.org/tippstricks/programmiertechnik/email/. Wobei das nicht ganz korrekt ist, für die TLD sind max. 5 Zeichen erlaubt, in wirklichkeit sind es aber 6, daher müsstest Du dort die Zeile
$dom_tldpart = '[a-zA-Z]{2,5}';
durch
$dom_tldpart = '[a-zA-Z]{2,6}';
ersetzen. (im PHP-Teil)
Grüße,
Christian
Hallo zusammen
Ich habe ein Formular erstellt, worin der User diverse Daten eintragen kann. Nun möchte ich die Daten überprüfen, bevor diese an eine E-mail-Adresse übermittelt werden. Doch wie stell ich das an? Ich hab da schon einige Varianten gesehen, konnte mir aber nicht viel darunter vorstellen. Der Test ob ein Feld ausgefüllt wurde krieg ich schon hin. Nun möchte ich aber sicherstellen, dass gewisse Felder nur Buchstaben oder nur Zahlen enthalten. Zudem kommen noch Spezialfälle, wie die Überprüfung einer E-mail Adresse oder die Angabe einer Telefonnummer, wo z.B. nur Zahlen, -, /, und Leerschläge erlaubt sein sollen, hinzu. Kann mir da jemand ne gute Erklärung geben wie ich da am besten vorgehe? Vielen Dank bereits im Voraus!
Gruss Chris
Hallo Chris
Aus meiner Sicht gibt es drei grundlegende Varianten:
1. Die Prüfung vor dem Submit auf dem Client selbst mit Javascript.
2. Der Benutzer sendet seine Daten zum Server und man prüft sie mit
einer Scriptsprache, in Deinem Fall wohl PHP.
3. Die Kombination von beiden.
Die dritte ist wohl die sauberste aber auch aufwendigste.
Ich verwende für die Prüfung von Formularinhalten stets etwas Javascript.
Unabhängig davon, ob ich die Prüfung auf dem Server auch noch mache.
Dies hat den Vorteil, dass man den Benutzer sofort auf einen Fehler aufmerksam
machen kann und ihn auch auf das Feld lotsen kann wo der Fehler liegt.
komplexere Musterabfragen wie Mailadressen usw. kann man relativ einfach mit
RegEx durchführen. Siehe dazu im Manual SelfHTML unter Javascript/Objectreferenz
das Object 'RegEx'. Das erste Verfahren bedingt allerdings das Javascript im
entsprechenden Browser aktiviert ist und/oder ein allfälliger Proxy/Firewall,
der zwischen dem Server und dem Benutzer liegt dies zulässt. Vorallem bei Firmen
ist dies längst nicht überall möglich. Ferner hat man vom Server aus keine
Möglichkeit die Javascripttauglichkeit zu steuern. Einzig ein Javascript-Referrer
und der Hinweis, dass Javascript benötigt wird bleibt da übrig.
Das heisst dann also, das die Variante zwei auch zum Einsatz kommen wird. Nur um
auf der sicheren Seite zu sein. Um den Benutzer dann nicht zur erneuten Eingabe
aller Daten zu zwingen muss man dann das Formular mit den bereits gesetzten Werten
zurücksenden. Ich markiere dann jeweils das fehlerhafte Feld mit einer Fehlerflagge
und gebe im Seitenkopf die gefundenen Fehler an. Für PHP gibt's eine Masse von
Online- Ressourcen zum abkupfern.
Wenn Du mir sagst, welche Variante Du einsetzen willst kann ich konkretere Angaben machen.
Gruss
Dani
Hallo Dani
Ich würde lieber PHP einsetzen, da ich damit auf der sicheren Seite bin (da serverseitig)...
Gruss Chris
Hallo Dani
Ich würde lieber PHP einsetzen, da ich damit auf der sicheren Seite bin (da serverseitig)...
Gruss Chris
Hallo Chris
OK! Reicht Dir der Ansatz von Christian Seiler?
Gruss
Dani