当我在数据库中创建用户时,我使用 crypt() 函数来保护密码,但是当我尝试创建一个身份验证系统来连接我的用户时,我不明白它是如何工作的。
使用这段代码,这总是传递到 if "WRONG ID OR PASSWORD"中:
<?php
//connexion to database
include'connexionBDD.php';
// Check connection
if ($bdd->connect_error) {
die("Connection failed: " . $bdd->connect_error);
}
echo "Connected successfully (".$bdd->host_info.")";
$pseudonyme = $_POST['pseudo'];
$password= $_POST['mdp'];
//on crypte le mot de passe
$password= crypt($password);
$req = $bdd->prepare('SELECT ID_utilisateur FROM utilisateurs
WHERE Pseudonyme = :pseudo AND Mot_de_passe = :mdp');
$req->execute(array(
'pseudo' => $pseudonyme,
'mdp' => $password));
$result= $req->fetch();
if(!$result)
{
echo "WRONG ID OR PASSWORD";
}
else
{
session_start();
$_SESSION['ID_utilisateur'] = $resultat['ID_utilisateur'];
$_SESSION['Pseudonyme'] = $pseudonyme;
$pseudo = $_SESSION['Pseudonyme'];
echo "<p> You are connected with $pseudo !<p></div>";
}
?>
最佳答案
crypt() 目前还不是存储密码的首选方式。
使用password_hash()生成密码和password_verify()比较它们。
示例代码:
$password = "tere";
$cryptPassword = password_hash($password, PASSWORD_DEFAULT);
$verify = password_verify($password, $cryptPassword);
var_dump($verify); // Returns bool(true)
还有 crypt()在 PHP 手册中有详细记录,请阅读。
关于php - 谁用 crypt() 创建了一个认证系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31099253/