Struppi: Apache 2.xy ignoriert 2x if (abfragen)?

Beitrag lesen

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.