2016-05-19 11 views
0

I-Bindung haben den folgenden Code ein, die richtig und gut funktioniert, ist es ein Salz Wert schafft, wenn sie in die MySQL-Datenbank eingegeben ..Kann nicht anmelden, nachdem ‚Salz‘ mit Hashing-Algorithmus PHP/MySQL

Die Frage, die ich Wenn ich versuche, mich mit dem while mit dem gesalzten Wert anzumelden, fehlt etwas in meinem Code (2. Bit Code auf diesem Post ist der Login welcher) der eine Probleme verursacht.

$result = $conn->prepare("INSERT INTO members (name, username, email, salt, password, age, gender, gender_of_dogs) VALUES (:name, :username, :email, :salt, :password, :age, :gender, :gender_of_dogs)"); 
$result->bindParam(':name', $value1); 
$result->bindParam(':username', $value2); 
$result->bindParam(':email', $value3); 
$result->bindParam(':salt', $salt); 
$result->bindParam(':password', $hashedPassword); 
$result->bindParam(':age', $value5); 
$result->bindParam(':gender', $value6); 
$result->bindParam(':gender_of_dogs', $value7); 

$value1 = $_POST['name']; 
$value2 = $_POST['username']; 
$value3 = $_POST['email']; 

$salt = uniqid('', true); 

$value4 = $_POST['password']; 
$value5 = $_POST['age']; 
$value6 = $_POST['gender']; 
$value7 = implode(',', $_POST['gender_of_dogs']); 

$hashedPassword = md5($salt.$value4); 
$result->execute(); 

echo "<h2>Thank you for registering, <br> You will now be redirected to the homepage...</h2>"; 
header("refresh:5; url=../index.php"); 

Unten ist der Code, wenn sie versuchen, um sich einzuloggen es lässt mich nicht anmelden, da es nicht ist die einzigartige Salz Wert in der Datenbank MySQL zu bekommen.
(zumindest glaube ich das ist das Problem.)

include('../db_connect.inc'); 

$username = $_POST['username']; 
$password = $_POST['password']; 
$salt = $_POST['salt']; 
$hashedPassword = md5($salt.$password); 

$query = $conn->prepare("Select * from dog_parks.members where username = :username_login and password = :password_login "); 
$query->bindParam(':username_login', $username); 
$query->bindParam(':password_login', $hashedPassword); 
$query->execute(); 
$count = $query->rowCount(); 
$row = $query->fetch(); 

if ($count > 0) { 
    session_start(); 
    $_SESSION['id'] = $row['username']; 

    header('location:home.php'); 
} 

Fehlermeldung
erhielt Error message received

+3

Bitte nicht else Fall:

Es sollte dies geändert werden. PHP liefert ['password_hash()'] (http://php.net/manual/en/function.password-hash.php) und ['password_verify()'] (http://php.net/manual/ de/function.password-verify.php) benutze sie bitte, ich möchte vielleicht deine Seite eines Tages verwenden Und hier sind einige [gute Ideen über Passwörter] (https://www.owasp.org/index.php/Password_Storage_Cheat_Sheet) – RiggsFolly

+1

Und POST dein Salz herum, das ist wie deine Hosen mitten auf der Straße fallen lassen !!! – RiggsFolly

+0

Überprüfen Sie anhand des Fehlers '$ _POST ['salt']' den Namen des Eingabefeldes. – chris85

Antwort

0

$query->bindParam(':username_login', $username); schlecht ist.

(':username', $value2); 

und fügen Sie in der __roll Ihr own__ Passwort-Hashing

+0

Völlig irrelevant habe ich Angst – RiggsFolly

Verwandte Themen