Eingabe-Check bei großen Formularen

Ich würde am anfang des Scriptes eine Liste Hart im Code definieren in der die gewünschten eigenschaften der Eingaben stehen. z.B.

PHP:
$Form["formularname"]["feldname"]["pflicht"]=true;
$Form["formularname"]["feldname"]["email"]=true;

Danach eine Funktion die, die sogewonnenen Spezifikationen mit den empfangenen Daten vergleicht. Fehler werden einfach in ein Array geschrieben.

Wenn danach Fehler vorhanden sind, wird das ganze Formular mit der Getätigten eingabe und erkannten Fehlern wieder ausgegeben. Das lässt sich mit einer 3 Zeilen "template engine" lösen. (simples str_replace()).

Wenn kein Fehler gefunden wurde werden die Daten weiter verarbeitet. Wie schon von einigen angesprochen, lässt sich das bestimmt mit OOP recht elegant lösen.
 
Hi,

Geht es hier nur um 1 Formular oder verschiedene?
In dieser Größenordnung ist es das einzige Formular.
( Noch weitere von diesen Monstern, und mein Schädel würde brummen. :) )

Ich würde am anfang des Scriptes eine Liste Hart im Code definieren in der die gewünschten eigenschaften der Eingaben stehen.
Diese Art der Codierung war mir bislang noch garnicht bekannt.
Danach eine Funktion die, die sogewonnenen Spezifikationen mit den empfangenen Daten vergleicht. Fehler werden einfach in ein Array geschrieben.
Mit Arrays habe ich noch nicht so viel Erfahrung.

Bevor ich diese Codierungs-Möglichkeit anwende, muß ich sie erst verstehen.
Deshalb werde ich mich dazu vorab erst einmal informieren.
Hast du dazu ein geeignetes Anfänger-Tutorial, daß du mir empfehlen kannst ?

Vorab Danke.

Gruß, MIke
 
Ich hab einfach mal eine Funktion geschrieben:

PHP:
<?php
 
function eingabe_check($eingabe, $name_eingabe, $typ = "string", $pflicht = 0, $minsize = 0, $maxsize = 10240){

    global $fehler_array_eingabe_check;
    
    // schauen ob es gesetzt und nicht leer ist
    if($pflicht == 1 and empty($eingabe)){
      $fehler_array_eingabe_check[] = "<li>".$name_eingabe." ist leer!</li>";
      return $eingabe;
    }
    
    // Standart-Sicherheit
    // Man muss vorher eine Verbindung zur DB
    // herstellen!
    $eingabe = mysql_real_escape_string($eingabe);
    
    /******************************
    // Verschiedene Typen:
    // - String
    // - Nummer
    // - Mail
    *******************************/
    switch($typ){
    
        default:
        case "string":
            if(!is_string($eingabe)){
              $fehler_array_eingabe_check[] = "<li>".$name_eingabe." ist kein Text!</li>";
            }
        break;
        
        case "number":
            if(!is_numeric($eingabe)){
              $fehler_array_eingabe_check[] = "<li>".$name_eingabe." ist keine Nummer!</li>";
            }
        break;
        
        case "mail":
            if( !eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$", $eingabe ) ){
              $fehler_array_eingabe_check[] = "<li>".$name_eingabe." ist keine E-Mail-Adresse!</li>";
            }
        break;
            
    } 
    
if( sizeof($eingabe) > $maxsize){
   $fehler_array_eingabe_check[] = "<li>".$name_eingabe." ist zu gro&szlig;!</li>";
}

if( sizeof($eingabe) < $minsize){
   $fehler_array_eingabe_check[] = "<li>".$name_eingabe." ist zu klein!</li>";
}

return $eingabe;

}


$test = eingabe_check($_GET["test"], "Test", "string", "1", 20);

foreach ($fehler_array_eingabe_check as $wert)
echo $wert;


?>

Die Fehler werden in dem Array $fehler_array_eingabe_check gespeichert.

Anregungen zur Verbesserung sind erwünscht ;)
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück