J'ai ajouté sha512
à ce formulaire de connexion mais je reçois toujours l'erreur Nom d'utilisateur ou mot de passe invalide. J'ai utilisé http://www.convertstring.com/Hash/SHA512 pour définir le mot de passe dans la base de donnéesLe formulaire de connexion ne lit pas sha512
Pourquoi cela ne fonctionne-t-il pas? Le mot de passe dans la base de données est haché avec sha512 + salt mais je reçois toujours l'erreur que le nom d'utilisateur/mot de passe est incorect.
if(isset($_POST['submit'])) {
$password1 = ($_POST['password_']);
$salted = "b5vy2m92m9c5my925myic52ddqwm534itkic4m3timcy35".$password1;
$hashed = hash('sha512', $salted);
if(!$_POST['username_'] || !$hashed) {
echo '<div class="alert alert-block alert-danger"><button type="button" class="close" data-dismiss="alert"><i class="ace-icon fa fa-times"></i></button>Complete all fields.</div>';
} else {
$q = Config::$g_con->prepare('SELECT * FROM `users` WHERE `name` = ? AND `password` = ?');
$q->execute(array($_POST['username_'], $hashed));
Connexion forme
<input type="text" name="username_"/><br/>
<input type="password" name="password_"/><br/>
<input type="submit" name="submit" value="login" class="btn btn-inverse">
scénario Total:
if(isset($_SESSION['user'])) echo '<script>
location.replace("'.Config::$_PAGE_URL.'"); </script>'
if(isset($_POST['submit'])) {
$password1 = ($_POST['password_']);
$salted = "b5vy2m92m9c5my925myic52ddqwm534itkic4m3timcy35".$password1;
$hashed = hash('sha512', $salted);
if(!$_POST['username_'] || !$hashed) {
echo '<div class="alert alert-block alert-danger"><button type="button" class="close" data-dismiss="alert"><i class="ace-icon fa fa-times"></i></button>Complete all fields.</div>';
} else {
$q = Config::$g_con->prepare('SELECT * FROM `users` WHERE `name` = ? AND `password` = ?');
$q->execute(array($_POST['username_'], $hashed));
if($q->rowCount()) {
$d = Config::$g_con->prepare('SELECT * FROM `panel_restrict` WHERE `PlayerName` = ?');
$d->execute(array($_POST['username_']));
$row1 = $d->fetch(PDO::FETCH_OBJ);
if($d->rowCount() && date("Y-m-d H:i:s") <= gmdate("Y-m-d H:i:s", $row1->Time)) {
if($row1->Permanent == 1) {
$expira = "<b>permanent</b>";
} else {
$expira = "pana la data de <b>". gmdate("Y-m-d H:i:s", $row1->Time) ."</b>";
}
echo '<div class="alert alert-block alert-danger">
Contul tau este suspendat '.$expira.'.<br />
Motiv: <b>'.$row1->Reason.'</b><br />
Banat pe data de <b>'.$row1->BanTimeDate.'</b></div>';
} else {
$dele = Config::$g_con->prepare("DELETE FROM panel_restrict WHERE PlayerName = ?");
$dele->execute(array($_POST['username_']));
$row = $q->fetch(PDO::FETCH_OBJ);
$_SESSION['user'] = $row->id;
echo '<script> location.replace("'.Config::$_PAGE_URL.'"); </script>';
//setcookie ("user",$_POST['username_'],time()+3600*24*60);
//setcookie ("password",$_POST['password_'],time()+3600*24*60);
//header ('Location: ' . $_PAGE_URL);
}
}
else echo '<div class="alert alert-block alert-danger"><button type="button" class="close" data-dismiss="alert"><i class="ace-icon fa fa-times"></i></button>Invalid username or password.</div>';
}
}
Recommencer l'utilisateur 'password_hash()' et 'password_verify()' lire le manuel –
quel type de champ pour le mot de passe dans la base de données? – monkeyinsight
J'utilise \t varchar (256) pour le mot de passe et \t varchar (64) pour le nom d'utilisateur –