if ((length($username) < 4) or (length($password) < 4) or (!$username))
{
if ((length($username) > 40) or (length($password) > 15) or (!$password))
{
bad();
}
}
Keine Ahnung was vorher ist, aber das ist doch das gleiche Problem wie in dem letzten Thread von dir. Wenn $username oder $password nicht definiert ist werden bei den Vergleichen Warnungen ausgespuckt. Deshalb !$var immer zuerst.
if(!$username || !$password ||
(length $username < 4 || length $username > 40) ||
length $password < 4 || length $password > 15)
)
{
bad();
}
or hat allerdings eine ander Wichtung (bzw. Bindung) als || kann sein das es damit zusammenhängt.
der Apache 2.xy ignoriert die erste abfrage einfach?!
Das es am Server liegt halte ich für zweifelhaft, zumindest nicht wegen den Zeilen.
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?
Struppi.