Проблема в Password verify

Друзья я хотел бы знать, из-за которого в моем условии IF сколько бы он не делает всегда он это распознает, как false, я проверил и реализуй консультацию правильно, связь правильно и array, который он приносит, - следующий:

Array ( [IDUSUARIO] => 1 [USUARIO] => admin [CONTRASENIA] => admin )

Что я врежу помимо рождения раньше? xdxd помоги пожалуйста.

Данные о базе данных, host, пользователь и пароль удалены, я это делаю на сервере HOSTINGER.

<?php

$host_db = "xxxxx";
$user_db = "xxxxxx";
$pass_db = "xxxxx";
$db_name = "xxxxxx";

$conexion = new mysqli($host_db, $user_db, $pass_db, $db_name);

if ($conexion->connect_error) {
 print("La conexion falló: " . $conexion->connect_error);
}

$username = $_POST['username'];
$password = $_POST['password'];

$sql = "SELECT * FROM USUARIOS WHERE USUARIO = '$username'";

$result = $conexion->query($sql);


if ($result->num_rows > 0) {     

 $row = $result->fetch_array(MYSQLI_ASSOC);

 }
 if (password_verify($password, $row['CONTRASENIA'])){ 

    $_SESSION['loggedin'] = true;
    $_SESSION['username'] = $username;
    $_SESSION['start'] = time();
    $_SESSION['expire'] = $_SESSION['start'] + (5 * 60);

    print "Bienvenido! " . $_SESSION['username'];
    print "<br><br><a href=panel-control.php>Panel de Control</a>"; 

 }else{ 
   print "Username o Password estan incorrectos.";
  print_r($row);
     print "<br><a href='index.html'>Volver a Intentarlo</a>";
 }
 mysqli_close($conexion); 
 ?>
0
задан 23.12.2016, 12:28
1 ответ

Ясно твоя ошибка:

В базе данных contraseГ±a admin он не сделан никогда с password_hash, и если мы читаем документацию php, говорит нам:

boolean password_verify (string $password, string $hash)
Подтверждает, что hash пропорциональный встретился с нею contraseГ±a облегченная.

Ясно то, что ты сравниваешь, admin и admin, никогда ты не производишь один hash.

, Когда ты веришь пользователь, он сохраняет Ваш contraseГ±a с password_hash

$password = password_hash($password, PASSWORD_DEFAULT);

, Как в твоей базе данных будет оставаться password как один hash, просто ты это делаешь:

if (password_verify($password_post, $row['CONTRASENIA'])) {
1
ответ дан 24.11.2019, 11:54
  • 1
    Упоминать о том, что, если он оставляет алгоритм PASSWORD_DEFAULT и люди PHP принимают решение в данном моменте изменить это bcrypt в другой dará проблемы (и достаточно обремени). Его состоит в том, чтобы определять explí citamente, который ты хочешь использовать. – kerunaru 23.12.2016, 13:03
  • 2
    @kerunaru весь разум, однако, если он принимает решение измениться из-за другого типа encriptacion, они должны считать сознательными, что в password произведенные ранее будут конфликты – sioesi 23.12.2016, 13:07
  • 3
    Уже я сохранял password, как hash, однако у меня продолжает появляться та же ошибка в момент logearme D: – Carlos Hernández 24.12.2016, 02:17
  • 4
    Когда ты вводишь информацию в компьютер admin, как password, ты делаешь password_hash ($password, PASSWORD_DEFAULT);? – sioesi 24.12.2016, 02:22
  • 5
    Если уже я это сделал из следующего способа $hash = password_hash ($ form_pass, PASSWORD_DEFAULT); – Carlos Hernández 24.12.2016, 04:12