Hallo zusammen,
ich habe mir mal eine kleine Funktion erstellt zur Überprüfung von Formularfeldern. Ich würde gerne mal einige Meinungen von euch hören, was ihr davon haltet. Insbesondere interessiert mich natürlich ob der Faktor Sicherheit für Scripte und Server gut gewährleistet ist oder ehr nicht.
	
mfg Melchor
							
						
					ich habe mir mal eine kleine Funktion erstellt zur Überprüfung von Formularfeldern. Ich würde gerne mal einige Meinungen von euch hören, was ihr davon haltet. Insbesondere interessiert mich natürlich ob der Faktor Sicherheit für Scripte und Server gut gewährleistet ist oder ehr nicht.
PHP-Code:
	
	
 // Formular-Daten-Prüfung mit regulären Ausdrücken
 function check ( $Typ, $Name, $Wert ){
   global $hack;
   global $check;
   //Spezielle Typen-Prüfung
   if( $Typ == 0 || $Typ == 2 || $Typ == 3 || $Typ == 4 ){
      // Prüfung ob Pflichtfelder nicht leer sind
      if( $Wert == "" ){
         $hack = true; 
         $check[] = "Das Eingabefeld $Name ist eine Pflichtangabe.\n";}}
   if( $Typ == 1 ){
      // Drop-Down-Auswahl-Prüfung
      if( $Wert == 0 || $Wert != 'on' ){
         $hack = true; 
         $check[] = "Das Eingabefeld $Name ist eine Pflichtangabe.\n";}}
   if( $Typ == 2 && $Wert != "" ){
      // Datums-Prüfung
      if( !preg_match("'\b(((0?[1-9]|[12][0-9])\.(0?[1-9]|1[0-2])\.)|(30\.((0?
                       [13-9])|(1[0-2]))\.)|(31\.(0?[13578]|1[02])\.))(\d{2}|
                       (19|20)\d{2})\b'", $Wert) ){
         $hack = true; 
         $check[] = "Das Eingabefeld $Name muss eine Datumsangabe in dem
                     Format DD.MM.YYYY sein.\n";}}
   if( $Typ == 3 && $Wert != "" ){
      // Nr.-Prüfung bei ICQ und MSN
      if( !preg_match("'((\d{3}-){2}(\d{3}))|((\d{3}){3})'", $Wert) ){
         $hack = true; 
         $check[] = "Das Eingabefeld $Name darf nur aus Ziffern in dem
                     Format xxx-xxx-xxx oder xxxxxxxxx bestehen.\n";}}
   if( $Typ == 4 && $Wert != "" ){
      // E-Mail-Prüfung auf Gültigkeit
      if( !preg_match("'(.*?)\.(.*)@(.+)\.(.*)|(.*?)@(.+)\.(.*)'", $Wert) ){
         $hack = true; $check[] = "Das Eingabefeld $Name ist ungültig.\n";}}
   // Allgemeine Prüfungen
   if( $Typ != 2 && $Wert != "" ){
      if( preg_match("'(([F|f][O|o][R|r][M|m][A|a][T|t]\s*:\s*[a-zA-Z]{1})|
                    ([U|u][P|p][D|d][A|a][T|t][E|e])|([D|d][E|e][L|l][E|e][T|t][E|e])|
                    ([S|s][A|a][V|v][E|e])|([L|l][O|o][A|a][D|d])|
                    ([M|m][Y|y][S|s][Q|q])|([F|f]|[L|l][O|o][P|p][E|e][N|n])
                    |\/|\||\{|\}|\[|\]|<|>|:|';')'", $Wert)){
         $hack = true; 
         $check[] = "Das Eingabefeld $Name darf keine Systembefehle, sowie 
                    diverse Sonderzeichen ('/, |, {, }, [, ], <, >, $, : und ;')
                    enthalten.\n";}}} 
          
Kommentar