chris: Formulareingaben überprüfen...

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

  1. Hallo Chris,

    nutze (serverseitig) Reguläre Ausdrücke. Erklärungen hierzu findest Du in SelfHTML.

    Gruß

    Eidgenosse

  2. 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

    --
    Ich wünsche allen frohe Weihnachten!
    Ich bitte darum, dass ein Themenbereich (BARRIEREFREIHEIT) eingerichtet wird.

    1. 0-9 ↩︎

    2. 0-9 ↩︎

    3. 0-9 ↩︎

    4. 0-\/ ↩︎

  3. 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

    1. Hallo Dani

      Ich würde lieber PHP einsetzen, da ich damit auf der sicheren Seite bin (da serverseitig)...

      Gruss Chris

      1. 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