Hallo Struppi,
wie immer konfus ;-)
war ja nicht anders zu erwarten ;-) (kennst mich ja schon ein b...)
ja ich glaub auch dass es mit der variable my $crypted was zu tun hat
diese variable steht unterer dem if (check())...was möglicherweise zum fehler geführt hat.Das crypten sollte erst ausgeführt werden,wenn sicher ist,dass das password existiert.my $crypted sieht so aus:
my $crypted = crypt($password, "Md") if ($password !~ /^Md/);
wie recht Du hattest...hatte echt ein problem noch zu lösen.
Das ist schlecht, was ist, wenn die Bedignung nicht zutrifft?
Dann wird $crypted nie initialisiert.
genau!
Ich vermute mla du willst eher sowas machen:
my $crypted = $password =~ /^Md/ ?
crypt($password, "Md") :
$password;
ja vielleicht noch m/^Md/
Es gibt in Perl durchaus die Möglichkeit Funktionen einen Parameter mit zugeben (in deinem Falle check($username, $password) z.b.)
wieso denn? Die werden doch am anfang deklariert mit
my $username = CGI::param('username')||'unbekannt';
my $password = CGI::param('password')||'';
ich habe die crypt in eine sub gepackt:
my $crypted = docrypt();
sub docrypt {
if ($password =~ m/^Md/) {
my $crypted = $password;
return $crypted;
}
else {
my $crypted = crypt($password, "Md");
return $crypted;
}
}
vielleicht wäre besser so?
sub docrypt {
if (CGI::param('password') =~ m/^Md/) {
my $crypted = $password;
return $crypted;
}
else {
my $crypted = crypt("$password", "Md");
return $crypted;
}
}
das sollte jetzt 100% gehen.
Gruss
Alain
P.S.Es handelt sich um mein cookieloginscript,was wir ja unten schon besprochen haben.