Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Hash hasła zwraca fałsz

Spójrz na swoje zapytanie jeszcze raz:

SELECT password FROM users WHERE email = :email

Wybierasz hasło do kolumny,

kiedy pobierasz wiersz, używasz pola hash

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

W przeciwieństwie do ciebie, twój skrypt wcale nie jest prosty, wykonujesz 3 zapytania na tym samym rekordzie, wypróbuj to podejście

$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. Czy mogę przełączyć „podłączonego” użytkownika w skrypcie sql, który pochodzi z mysql?

  2. użyj tego samego wyzwalacza dla różnych tabel

  3. WYBIERZ każdego pracownika, który ma wynagrodzenie wyższe niż ŚREDNIA jego działu

  4. tomcat 7.0.42 pooling, hibernacja 4.2, rozwiązanie mysql rock solid autoreconnect

  5. #1111 — Nieprawidłowe użycie funkcji grupy