Ich versuche, die Krypta-Funktion zu verwenden ein Benutzerdetails in der Datenbank zu überprüfen:Perl crypt scheinbar nicht funktioniert
my $sql = $dbh->prepare("SELECT COUNT(id) FROM tblUsers WHERE UPPER(Username)=UPPER(?) AND Password=?");
my $count;
$sql->execute(
$args{login_username},
crypt($args{login_password},$args{login_username})
);
aber es gibt Zeilen 0 (mit dem Passwort auf jeden Fall richtig)
die Zeile:
$sql->execute($args{login_username},$args{login_password});
funktioniert perfekt.
Irgendwelche Ideen, was schief gehen könnte?
Ist das Passwort 'crypt'ed in Ihrer Datenbank gespeichert? (Sieht nicht so aus.) – Mat
Woher weißt du, dass es "definitiv" korrekt ist? Aus dem Perl-Programm geben Sie die verschlüsselte Zeichenfolge aus. Vergleichen Sie das manuell mit dem Datensatz in der Datenbank. –
@brian: wenn er sagt, dass die alternative "execute" -Linie perfekt funktioniert, nehme ich an, dass es das Passwortfeld unverschlüsselt abgleicht. – Borodin