Mysql
 sql >> база данни >  >> RDS >> Mysql

Хешът на паролата се връща false

Вижте още веднъж заявката си:

SELECT password FROM users WHERE email = :email

Вие избирате паролата на колоната,

когато извличате реда, използвате полето hash

$_SESSION['hash'] = $row1['hash'];

За разлика от вас, скриптът ви не е никак прост, изпълнявате 3 заявки за един и същ запис, опитайте този подход

$email = $_POST['email'];
$pass = $_POST['password'];

if($email === ''){
    $_SESSION['message1'] = 'Enter a valid email';
    header('Location: index.php');
    exit();
}

if($pass === ''){
    $_SESSION['message1'] = 'Enter a valid password';
    header('Location: index.php');
    exit();
}

$query = 'SELECT name, email, password 
          FROM users 
          WHERE email = :email LIMIT 1';


$stmt = $con->prepare($query);
$stmt->bindValue(':email', $email);
$stmt->execute();
$row = $stmt->fetch(PDO::FETCH_ASSOC);

if(!$row){
    $_SESSION['message1'] = 'User does not exist';
    header('Location: index.php');
    exit();
}

//hashed password from Database
$hash = $row['password'];

if(password_verify($pass, $hash)){
    $_SESSION['hash'] = $row['password'];
    $_SESSION['name'] = $row['name'];
    $_SESSION['email'] = $row['email'];
    header('Location: profile.php');
}else{
    $_SESSION['message1'] = 'Make sure email and password are correct';
    header('Location: index.php');
    exit();
}



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL връзката хвърля нулева препратка

  2. Стратегия за кеширане, кога кеширането става безсмислено?

  3. Как да коригирате 'java.lang.ClassNotFoundException:com.mysql.jdbc.Driver', след като го добавите към пътя за изграждане и го регистрирате с помощта на Class.forName();

  4. Как да изберете един ред на случаен принцип, като се вземе предвид теглото?

  5. Ефективна обработка на голямо количество данни с MySQL и PHP