2016-12-10 2 views
0

Ich habe Probleme mit password_verify zu funktionieren, es gibt immer falsch (falsches Passwort) zurück. Wenn ich das Passwort zurückmelde, wird das korrekte Passwort angezeigt. Irgendwelche Ideen? Hier ist mein Code:PHP - password_verify gibt immer false zurück (falsches Passwort)

<?php 
    $servername = "localhost"; 
    $database_name = "xxx"; 
    $database_username = "xxx"; 
    $database_password = "xxx"; 
    $username = $_POST['username']; 
    $password = $_POST['password']; 
    $conn = mysqli_connect ($servername, $database_username, $database_password, $database_name); 
    $error_message = ""; 
    $allowed_chars = "/^[A-Za-z .'-]+$/"; 
    $email_chars = '/^[A-Za-z0-9._%-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/'; 
    function error ($error) { 
     echo $error; 
     die(); 
    } 
    if ($conn->connect_error) { 
     die ("Connection failed: " . $conn->connect_error); 
    } 
    $sql = "SELECT username, password FROM users"; 
    $query = mysqli_query ($conn, $sql); 
    while ($row = mysqli_fetch_assoc ($query)) { 
     echo 'Username: ' . $row["username"] . '<br>' . 'Password: ' . $password . '<br>' . 'Hashed Password: ' . $row["password"] . '<br><br>'; 
    } 
    $hashed_password = "SELECT password FROM users WHERE username = '$username'"; 
    $query = mysqli_query ($conn, $hashed_password); 
    if (!isset ($query)) { 
     echo '$query doesn\'t appear to be set' . '<br>'; 
    } else { 
     echo '$query is set' . '<br>'; 
    } 
    $password_input = password_verify ($password, $hashed_password); 
    $result = mysqli_fetch_assoc ($query); 
    $login_cred = "SELECT * FROM users WHERE username='$username'"; 
    if ($password_input) { 
     echo 'The password you entered is correct!'; 
    } else { 
     echo 'The password you entered is incorrect!'; 
    } 
?> 

Database structure for password

Cheers, ist jede Hilfe sehr geschätzt.

+2

'$ hashed_password' ist der Abfrage-String, nicht das Ergebnis implementiert ist –

Antwort

1

$hashed_password war eine SQL-Abfrage, nicht die Zeilenausgabe aus der Datenbank.

ist der Schnipsel feste

<?php 
    $hashed_password = "SELECT password FROM users WHERE username = '$username'"; 
    $query = mysqli_query ($conn, $hashed_password); 
    $row = mysqli_fetch_assoc ($query); 
    $hashed_password = $row['password']; 
?> 

Hier das Snippet

<?php 
    $servername = "localhost"; 
    $database_name = "xxx"; 
    $database_username = "xxx"; 
    $database_password = "xxx"; 
    $username = $_POST['username']; 
    $password = $_POST['password']; 
    $conn = mysqli_connect ($servername, $database_username, $database_password, $database_name); 
    $error_message = ""; 
    $allowed_chars = "/^[A-Za-z .'-]+$/"; 
    $email_chars = '/^[A-Za-z0-9._%-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/'; 
    function error ($error) { 
     echo $error; 
     die(); 
    } 
    if ($conn->connect_error) { 
     die ("Connection failed: " . $conn->connect_error); 
    } 
    $sql = "SELECT username, password FROM users"; 
    $query = mysqli_query ($conn, $sql); 
    while ($row = mysqli_fetch_assoc ($query)) { 
     echo 'Username: ' . $row["username"] . '<br>' . 'Password: ' . $password . '<br>' . 'Hashed Password: ' . $row["password"] . '<br><br>'; 
    } 
    $hashed_password = "SELECT password FROM users WHERE username = '$username'"; 
    $query = mysqli_query ($conn, $hashed_password); 
    $row = mysqli_fetch_assoc ($query); 
    $hashed_password = $row['password']; 
    $password_input = password_verify ($password, $hashed_password); 
    $result = mysqli_fetch_assoc ($query); 
    $login_cred = "SELECT * FROM users WHERE username='$username'"; 
    if ($password_input) { 
     echo 'The password you entered is correct!'; 
    } else { 
     echo 'The password you entered is incorrect!'; 
    } 
?> 
+1

kein Wert in einer Schleife ist, wenn ein Ergebnis wird erwartet, –

+0

True, danke für die heads-up, wusste nicht, dass lol. – harryparkdotio

Verwandte Themen