Kennt sich jmd mit password_verify funktion aus?

... komplette Frage anzeigen

3 Antworten

Hallo,

der 2. Wert bei der password_verify() Funktion muss ein Hash-Wert sein, der zuvor mit der Funktion password_hash() erzeugt wurde. Also einfach das Passwort des Users aus der Datenbank "hashen":

$hash = password_hash($user['Password'], PASSWORD_DEFAULT);

VG

David



Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von DavidHuber
08.04.2016, 11:40

bzw. andersrum, denke das Passwort wurde als Hashwert in der Datenbank gespeichert. Dann musst du das Passwort aus dem Formular hashen und die Werte bei password_verify() vertauschen:

if(!empty($_POST['submit'])) {

$email = $_POST['logEmail'];
$passwort = password_hash($_POST['logPasswort'], PASSWORD_DEFAULT);

$statement = $pdo->prepare("SELECT * FROM tbluser WHERE EMail = :email");
$result = $statement->execute(array('email' => $email));
$user = $statement->fetch();

$hash = $user['Password'];

if (!is_null($user) && password_verify($hash, $passwort)) {
$_SESSION['userid'] = $user['id'];
die('Login erfolgreich. Weiter zu internen Bereich');
} else {
$errorMessage = "E-Mail oder Passwort war ungültig
";
}

0

versuchs mal mit

'mysql:host=localhost;dbname=test;charset=utf8'

das problem liegt beim speichern und lesen aus der datenbank , da kein charset angegeben ist kann es durchaus sein das es nicht als utf8 erfolgt.

generell sollten auch die scripte etc alles in UTF8 gespeichert sein , auch die Eingabe in der Form sollte UTF8 sein .

ergo fehlt da noch im html eine meta angabe


<meta charset="utf-8">

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von maximilianus7
06.04.2016, 19:05

charset spielt hier keine rolle

0

villeicht soltten wir mal deinen code anschauen können? poste ihn doch mal auf www.paste2.org

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von swobocop
07.04.2016, 11:00

<?php
session_start();

$pdo = new PDO('mysql:host=localhost;dbname=dbmyfood', 'root', '');

if(!empty($_POST['submit'])) {
$email = $_POST['logEmail'];
$passwort = $_POST['logPasswort'];
$statement = $pdo->prepare("SELECT * FROM tbluser WHERE EMail = :email");
$result = $statement->execute(array('email' => $email));
$user = $statement->fetch();
$hash = $user['Password'];

if (!is_null($user) && password_verify($passwort, $hash)) {
$_SESSION['userid'] = $user['id'];
die('Login erfolgreich. Weiter zu internen Bereich');
} else {
$errorMessage = "E-Mail oder Passwort war ungültig
";
}

}

if(!empty($_POST['PWvergessen']))
{
header ("Location: passwortvergessen.php");

}
if(!empty($_POST['registrieren']))
{
header("Location: ../Registrieren/Registrieren.php");
}

?>

0

Was möchtest Du wissen?