Thread Hilfe mit Formular Script: CGI - Perl ### Formular (30 answers)
Opened by Strat at 2004-01-16 12:37

Dubu
 2004-01-28 22:36
#28180 #28180
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
[quote=Captain Future,28.01.2004, 02:08]
Code: (dl )
1
2
3
4
my $fehler;
my $checker=0;
sub falsch {
       $fehler = @_;

[/quote]
Das weist $fehler die Anzahl der Elemente in @_ zu. (@_ im skalaren Kontext!) Du meinst sowas:
Code: (dl )
        $fehler .= shift;

Das haengt das erste Element in @_, also den ersten Uebergabeparameter, hinten an $fehler an.

Mir ist aber dennoch schleierhaft, warum $fehler dann '11' oder '111' ist. (Oder gibst du in missing() $fehler mehrfach aus?)

Quote
Code: (dl )
1
2
3
4
        $checker=1;
}
...
&falsch('Fehler 06: Bitte eine gueltige eMail Adresse eingeben !<br>') unless ($email =~ m/^[a-zA-Z0-9][-\_\.]*[a-zA-Z0-9]\@[a-zA-Z0-9][-\_\.]*[a-zA-Z0-9]\.([a-zA-Z]){2,4}$/);

Das ist keine gute Regex fuer E-Mail-Adressen.
Du verlangst ein alphanumerisches Zeichen am Anfang, dann beliebig oft '-', '_' oder '.' hintereinander, dann noch ein weiteres alphanumerisches Zeichen vor dem '@'. Dahinter sieht's genauso aus. Da wird kaum jemand eine korrekte E-Mail haben.
Nimm lieber Email::Valid o.ae. dafuer. Eine korrekte Regex fuer E-Mail-Adressen geht ueber ca. eine Seite (s. Friedl, "Regular Expressions").

Quote
Code: (dl )
&falsch('Fehler 07: Bitte eine gueltige Telefonnummer eingeben !<br>') unless ($telefon =~ m/^[0]\d+.\d+$/);

Warum setzt du die Null in eckige Klammern? Das bedeutet "ein beliebiges Zeichen aus der Menge, die nur die Null enthaelt". Danach kommt eine oder mehr Ziffern, ein beliebiges Zeichen ('.'), gefolgt von einer oder mehr Ziffern. Hm.

Quote
Code: (dl )
&falsch('Fehler 08: Bitte eine gueltige Telefaxnummer eingeben !<br>') unless ($telefax =~ m/^[0]\d+.\d+$/);

s.o.

Quote
Code: (dl )
&falsch('Fehler 09: Bitte einen gueltigen Strassennamen eingeben !<br>') unless ($strasse =~ m/\w?\-\w/);

Deine $strasse muss ein '-' enthalten?

Quote
Code: (dl )
&falsch('Fehler 10: Bitte einen gueltigen Ortsnamen eingeben !<br>') unless ($ort =~ m/\D/);

Dein Ort ist gueltig, wenn mindest ein Zeichen keine Ziffer ist.

Quote
Code: (dl )
&falsch('Fehler 11: Bitte einen gueltigen Landesnamen eingeben !') unless ($land =~ m/\D/);

s.o.

Tja, mit den Regexen hast du noch ein paar Probleme.

View full thread Hilfe mit Formular Script: CGI - Perl ### Formular