$2y$10$zzZCN7UlukvY2skb3ELVp.4y3Oc7NJTEsFyqdstqYxT
l'hash è lungo solo 50 ed è non valido/troppo corto e, come ho detto, MySQL fallirà silenziosamente; la segnalazione/il controllo degli errori non avrebbe aiutato qui.
La lunghezza della colonna della password dovrebbe essere 60 (si consiglia 255), quindi non è stata memorizzata correttamente in origine.
Dovrai cancellare la colonna/o la tabella della password, aumentare la lunghezza della colonna e ricominciare da capo.
Riferimento:
Puoi anche modificare la tua query per leggere come:
$con = new mysqli("xxx", "xxx", "xxx", "xxx");
if ($con->connect_error) {
die('Connect Error (' . $con->connect_errno . ') '
. $con->connect_error);
}
$query = "SELECT `pass` FROM `user` WHERE `email`='$emailLogin'";
$result = $con->query($query);
// error checking on the query
if (!$result) {
echo "<p>There was an error in query: $query</p>";
echo $con->error;
}
$row_hash = $result->fetch_array();
if (password_verify($passLogin, $row_hash['pass'])) {
echo "Success!";
}
Modifica:
Aggiungendo da un commento che ho lasciato all'OP:
La tua funzione di verifica deve avere una connessione stabilita al tuo database, questo è ciò che ritengo stia accadendo qui (ambito variabile). Quindi dovrai utilizzare global $con;
o passa la connessione (variabile) alla tua funzione (che è meglio nella maggior parte dei casi).
Non so se stai eseguendo un "include" per la funzione e, in tal caso, ecco qual è l'altro problema.
Es.:function VUP($con, $check, $valid){
o function VUP($check, $valid){ global $con;
- Prova entrambi. Usa $result = mysqli_query($con, $query) or die(mysqli_error($con));
invece di quello che hai adesso.