Note
Bu cevap aslında bir tuzsuz karma önerilir. Günümüzde aptalca, yani modern çağın haline getirmek için yeniden yazılmış oldu. SO burada eski içerik benzer şimdi kötü cevaplar dikkat edin.
Sen PDO kullanarak konum, böylece tutucular ile parametreli sorgular kullanarak olmalıdır:
$sql= "INSERT INTO contractors (userid, password, name) VALUES (?, ?, ?)";
$result = $dbh->prepare($sql);
$count = $result->execute(array($userid, $pass1, $name));
echo $count."<br>";
Modern çağda, bize Blowfish/bcrypt yerine MD5 veya SHA1 gerekir. PHP 5.3 olarak, crypt
with the $2y$
öneki kullanabilirsiniz. PHP 5.5 olarak, arada password_hash
instead. You can use ircmaxell's password_compat library kullanmak mümkün olacak.
İşte crypt
kullanarak bir demo ve bir very low zorluk değeri bulunuyor. Ayrıca tuz depolamak unutmayın. Ben bu demo burada tuz kodlanmış ettik yaparken, kullanıcı başına benzersiz bir tuz kullanmalıdır.
$salt = 'saltysaltsaltsalt';
$password_hash = crypt($pass1, '$2a$07$' . $salt);
$sql= "INSERT INTO contractors (userid, password, salt, name) VALUES (?, ?, ?, ?)";
$result = $dbh->prepare($sql);
$count = $result->execute(array($userid, $password_hash, $salt, $name));
echo $count."<br>";
Parola doğrulanıyor aynı parametreleri kullanarak karma yeniden inşa kadar kolaydır.
$sth = $dbh->prepare('SELECT password, salt FROM contractors WHERE userid = ?');
$sth->execute(array($userid));
list($existing_hash, $salt) = $sth->fetch(PDO::FETCH_NUM);
unset($sth);
$new_hash = crypt($pass1, '$2a$07$' . $salt);
if($new_hash === $existing_hash) {
echo "Password matched.";
} else {
echo "Password did not match.";
}