sql >> Database >  >> RDS >> Mysql

PHP-login met MySQL-gegevens en gehasht wachtwoord

In plaats van MD5 te gebruiken of te proberen het wachtwoord te ontsleutelen - zoals anderen hier hebben gesuggereerd - gebruik je gewoon PHP's native password_hash() functie die automatisch controleert of het wachtwoord voor u correct is.

Versleutel het wachtwoord als volgt:

$unencrypted_password = 'secret!'; 
$encrypted_password = password_hash($unencrypted_password,  PASSWORD_DEFAULT);

Voeg het dan als volgt in uw DB in:

INSERT INTO users (encrypted_password, username) VALUES ($encrypted_password, $username);

Als u wilt controleren of het wachtwoord correct is, selecteert u het wachtwoord uit de database met:

SELECT encrypted_password FROM users WHERE username = $username;

Controleer ten slotte of het wachtwoord correct is met behulp van passoword_verify() :

$correct = password_verify($unecnrypted_password, $encrypted_password);
if($correct == true) {
    echo 'correct password!';
} else {
    echo 'password incorrect!';
}

Wees voorzichtig om te beschermen tegen SQL-injectie, aangezien de bovenstaande code er kwetsbaar voor is.



  1. Moet u altijd samenvoegen gebruiken in een WAAR als er null/lege waarden kunnen zijn in de kolommen die u vergelijkt?

  2. MySQL-vergelijkingsoperator, spaties

  3. Codeigniter - meerdere databaseverbindingen

  4. Fatale fout:oproep naar ongedefinieerde functie mysqli_result()