Einen geruhsamen Sonntag wünsche ich...
Ich versuche gerade einen geschützten Admin-Bereich zu erstellen, der über ein Passwort geschützt sein soll. Irgendwie gibt es da ein Problem mit dem HASH-Vergleich. Folgenden Code habe ich aktuell dafür erstellt:
Das Problem scheint hier der HASH-Wert in der Datenbank zu sein, den ich mit SELECT password('XXXXXX'); direkt über die Eingabe-Funktion in die Datenbank eingefügt habe. Nur scheint der Vergleich in der Abfrage nicht zu funktionieren. Wenn ich das Passwort im Klartext in die Datenbank schreibe, funktioniert alles wie es soll, die Abfrage usw scheint also richtig zu sein.
Daher die Frage, was da schief gelaufen sein kann oder wie ich den richtigen Hash in die DB bekommen kann? Vielleicht liegt ja da der Fehler. Der bei mir ausgegebene Hash-Wert hat 41 Stellen, mit den eingetragenen varchar(100) sollte ich da also auf der sicheren Seite sein.
Besten dank
Michael
Ich versuche gerade einen geschützten Admin-Bereich zu erstellen, der über ein Passwort geschützt sein soll. Irgendwie gibt es da ein Problem mit dem HASH-Vergleich. Folgenden Code habe ich aktuell dafür erstellt:
PHP:
$passwort = htmlspecialchars($_POST['login_passwort']);
include_once("inc/db.inc.php");
$mysqli_abfrage = "SELECT
benutzer_name, benutzer_passwort
FROM
benutzer
WHERE
benutzer_name = '" . htmlspecialchars($_POST['login_name']) . "'";
if($mysqli_ergebnis = $mysqli_verbindung->execute_query($mysqli_abfrage))
{
if($mysqli_ergebnis->num_rows == 0)
{
echo "<p>Es wurde kein Benutzer mit diesem Namen gefunden</p>";
}
else
{
while($datensatz = $mysqli_ergebnis->fetch_assoc())
{
if(password_verify($passwort, $datensatz["benutzer_passwort"]))
{
ini_set('session.use_cookies' ,1);
ini_set('session.use_only_cookies',1);
ini_set('session.use_trans_sid' ,0);
session_start();
$_SESSION['loggedin'] = true;
echo "login gestattet";
}
else
{
echo "login verwehrt<br>";
}
}
}
}
Das Problem scheint hier der HASH-Wert in der Datenbank zu sein, den ich mit SELECT password('XXXXXX'); direkt über die Eingabe-Funktion in die Datenbank eingefügt habe. Nur scheint der Vergleich in der Abfrage nicht zu funktionieren. Wenn ich das Passwort im Klartext in die Datenbank schreibe, funktioniert alles wie es soll, die Abfrage usw scheint also richtig zu sein.
Daher die Frage, was da schief gelaufen sein kann oder wie ich den richtigen Hash in die DB bekommen kann? Vielleicht liegt ja da der Fehler. Der bei mir ausgegebene Hash-Wert hat 41 Stellen, mit den eingetragenen varchar(100) sollte ich da also auf der sicheren Seite sein.
Besten dank
Michael