hmmm,eben bei den !$var happerte es anscheinend,als ich keinen usernamen eingab,ignorierte der server den fehler,ohne passwort eingabe gings.
if(!$username || !$password ||
(length $username < 4 || length $username > 40) ||
length $password < 4 || length $password > 15)
)
{
bad();
}na gut aber da fragst Du ja auch nur einmal alles ab.Ich hatte mir einfach der übersichthalber zweimal einen if strang geschrieben.
nein es ist nicht dasselbe. Du hast die Abfrage !$username an den schluss gesetzt, d.h. erst überprüft ob die Länge stimmt und dann ob überhaupt was da ist.
D.h. wenn du nichts eingibst ist $username undefiniert und folglich kann er gar nicht die Länge prüfen deshalb erst !$username
Und so gehts nun:
my $lenus = length($username)||'2';
my $lenpa = length($password)||'2';hier gibst du ja auf jeden Fall einen Wert vor. D.h. length(...) kann undefniert sein?
ja damit muss ich nicht auch noch !$lenus in den if zweig einbinden,welches einen fehler erzeugt,falls kein username oder passwort geschrieben wurde.
sinvollerweise machst du das beim Abfragen des Parameters:
my $username = CGI::param('user') || '';
Dann ist $username auf jeden Fall definiert.
Struppi.