Форма входа не читается sha512
Я добавил sha512
к этой форме входа, но я получаю сообщение об ошибке Неверное имя пользователя или пароль. Я использовал http://www.convertstring.com/Hash/SHA512 чтобы установить пароль в базе данных
Почему это не работает? Пароль в базе данных хэшируется с помощью соли sha512 +, но я получаю сообщение об ошибке, что имя пользователя / пароль неверны.
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));
Форма входа
<input type="text" name="username_"/><br/>
<input type="password" name="password_"/><br/>
<input type="submit" name="submit" value="login" class="btn btn-inverse">
Всего сценария:
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>';
}
}
1 ответ
прекратить говорить, чтобы использовать что-то лучше... даже если бы вы bcrypt вы сказали бы, использовать что-то лучше, помогите мне решить эту проблему, пожалуйста..
Нет. Люди советуют вам использовать password_hash() и password_verify() по очень веским причинам. Используй их. Это избавит вас от огромного объема работы и, что еще важнее, помешает вам самостоятельно реализовать недоделанное решение. Вы не должны создавать свою собственную соль. На самом деле, это было устарело с PHP 7.
Теперь, чтобы ответить на ваш вопрос. Когда вы использовали онлайн-инструмент для генерации хеша, вы вводили соль. Этот онлайн-инструмент добавил соль к вашему паролю. Вы добавляете его к своему паролю. В дополнение к этому, я думаю, что случай с онлайн-инструментом - это ОБРАЗЕЦ вашего хэша, в то время как PHP оставляет его в нижнем регистре. Вам нужно сравнить те же случаи.
http://sandbox.onlinephpfunctions.com/code/b3801209519783618445a06d31380b24b876fd4c
Все это говорит о том, что да, использование password_hash() и password_verify() делает вашу жизнь проще. http://php.net/manual/en/function.password-hash.php