Homepage Inspire-world | Forum
CGI/Perl Workshops Formulardaten prüfen

 Inhaltsverzeichnis/Codeschnipsel Übersichtsseite/Formulardaten prüfen
Hier will ich verschiedene kleine Routinen vorstellen mit denen man Daten die von Formularen kommen prüfen kann.

1. Fehlermeldungen an Subroutine übergeben

# Fehlerbehandlung
$fehlermeldung = "" ;
$fehler_gefunden = "" ;

# Hier wird nur abgefragt ob denn überhaupt etwas in dem Formularfeld steht
$errormeldung = "<li>Das Feld Vorname wurde nicht ausgefüllt.\n" ;

if ($vorname eq "") {
$fehlermeldung = $fehlermeldung.$errormeldung ;
$fehler_gefunden = 1 ; }

#--------------------------------------#
# Diese Prüfung ist schon genauer und testet die E-Mail auf das @ Zeichen
$errormeldung = "<li>Bitte geben Sie eine gültige E-Mail Adresse ein.\n" ;

if ($email !~ /.+\@.+\..+/) {
$fehlermeldung = $fehlermeldung.$errormeldung ;
$fehler_gefunden = 1 ; }

#--------------------------------------#
# Diese Prüfung ist so ziemlich die beste die man nutzen kann zum E-Mail Check.
$errormeldung = "<li>Bitte geben Sie eine gültige E-Mail Adresse ein.\n" ;

if ($email !~ /^([a-zA-Z0-9][a-zA-Z_0-9-\.]*)(\@)([a-zA-Z0-9][a-zA-Z_0-9-\.]*[a-zA-Z0-9])(\.)([a-zA-Z0-9]*)$/) {
$fehlermeldung = $fehlermeldung.$errormeldung ;
$fehler_gefunden = 1 ; }
#--------------------------------------#
# Hier wiederum sind nur Zahlen erlaubt
$errormeldung = "<li>Es dürfen nur Zahlen eingegeben werden.\n" ;

if ($telefon !~ /^[0-9]*$/) {
$fehlermeldung = $fehlermeldung.$errormeldung ;
$fehler_gefunden = 1 ; }

#--------------------------------------#
# Hier wiederum sind nur Buchstaben erlaubt
$errormeldung = "<li>Geburtsort darf keine Zahlen enthalten.\n" ;

if ($geburtsort !~ /^[a-zA-ZäöüßÄÖÜ]*$/) {
$fehlermeldung = $fehlermeldung.$errormeldung ;
$fehler_gefunden = 1 ; } 

#--------------------------------------#
# Hier wiederum sind nur Zahlen und der . erlaubt
$errormeldung = "<li>Es dürfen nur Zahlen und der . eingegeben werden.\n" ;

if ($geburtstag !~ /^[0-9.]*$/) {
$fehlermeldung = $fehlermeldung.$errormeldung ;
$fehler_gefunden = 1 ; }

#--------------------------------------#
# Prüfung auf bestimmte Minimal und Maximallänge
$errormeldung = "<li>Das Feld Text zu ... wurde nicht korrekt ausgefüllt. 
Mindestens 3 Zeichen muß, aber höchstens 
$erlaubte_zeichen Zeichen lang darf der Inhalt dieses Feldes sein. \n" ;

if ((length($textzeichen) < 3 || length($textzeichen) > $erlaubte_zeichen )) {
$fehlermeldung = $fehlermeldung.$errormeldung ;
$fehler_gefunden = 1 ; }

#--------------------------------------#
# Fehlermeldung bei zu langen Worten ausgeben (Layoutschoner)
wenn im Gästebuch etc. mal einer 
Teeeeeeeeessssssssssssssssssstttttttttttttttttttt schreiben will.
$max_wort = 50;
$zeile = $text;
@alle_worte = split / /, $zeile;
foreach $wort (@alle_worte) {
$i=0;
my @buchstaben = map $i++, split //, $wort;
}
$errormeldung = "<li>Sie haben zuviele Zeichen im Text ohne Leerzeichen 
dazwischen eingegeben! Ein einzelnes Wort darf max $max_wort Zeichen lang sein.";

if ($i > $max_wort) {
$fehlermeldung = $fehlermeldung.$errormeldung ;
$fehler_gefunden = 1 ; }


#--------------------------------------#
# Dies sind nur wenige Beispiele die möglich sind.
# Im Fehlerfall wird das dann als ordentlich formatierte Liste in der Subrotine
# "sub fehlerausgabe" ausgegeben.
#--------------------------------------#

# Wenn Fehler - dann aufruf der Subroutine
if ($fehler_gefunden) {
&fehlerausgabe; }
1.1. Die ausgebende Subroutine

# Fehlerausgabe
sub fehlerausgabe {

print "Content-type: text/html\n\n";
print "<HTML><HEAD><TITLE>FEHLER</TITLE></HEAD>\n";
print "<BODY><font face=\"Verdana, Arial\" size=\"2\">\n";
print "Beim ausfüllen haben Sie folgendes vergessen:<ol> <b>$fehlermeldung</b>\n";
print "</ol><br><br>\n";
print "Bitte gehen Sie zurück und versuchen es erneut!\n";
print "</font></BODY></HTML>\n";
exit;
}


2. Fehlermeldungen direkt ausgeben

# Pflichtfelder prüfen

if ($aktion eq eintragen && $eintragsname eq '') {
$mitteilung .= "<li>Bitte das Feld \"Dein Name\" ausfüllen!"; 
}

if ($aktion eq eintragen && $email eq '') {
$mitteilung .= "<li>Bitte das Feld \"E-Mail\" ausfüllen!"; 
}

if ($aktion eq eintragen && $eintrag eq '') {
$mitteilung .= "<li>Bitte in das Feld \"Dein Eintrag\" etwas eingeben!"; 
}

if ($aktion ne eintragen || $email eq '' || $email =~ /\@/i) {
} else {
$mitteilung .= "<li>Das Format der \"E-Mail\" Adresse ist ungültig!";
$ungueltig = Fehlermeldung;
}

if ($aktion ne eintragen || $homepage eq '' || $homepage =~ /\./i) {
} else {
$mitteilung .= "<li>Das Format der \"Homepage URL\" Adresse ist ungültig!"; 
$ungueltig = Fehlermeldung;
}
2.1. In das Script, z.B. in eine neue Tabellenreihe die Fehlermeldung schreiben

# Fehlerausgabe

if ($mitteilung) {
print qq~
<tr>
<td colspan=2 bgcolor="$tabcolor"><ul>$mitteilung</ul></td>
</tr>
~;
}
2.2. Beim Formularbeginn auf Fehler prüfen

if ($eintragsname eq '' || $email eq '' || $eintrag eq '' || $ungueltig eq Fehlermeldung) {

... das eigentliche Formular...

} else {

... wenn OK Formulardaten verarbeiten

}


 Zum Inhaltsverzeichnis/Codeschnipsel Übersichtsseite/Formulardaten prüfen
Autor: Helmut Walter Homepage Inspire-world Fragen, Anregungen und Hinweise bitte in das Forum

Valid HTML 4.0! Valid CSS!