$2y$10$zzZCN7UlukvY2skb3ELVp.4y3Oc7NJTEsFyqdstqYxT
hash ma tylko 50 długości i jest nieprawidłowy/za krótki i jak powiedziałem, MySQL po cichu zawiedzie; raportowanie/sprawdzanie błędów nie pomogłoby tutaj.
Długość kolumny hasła powinna wynosić 60 (sugerowane jest 255), więc nie było ono pierwotnie przechowywane poprawnie.
Będziesz musiał wyczyścić kolumnę/lub tabelę hasła, zwiększyć długość kolumny i zacząć od nowa.
Odniesienie:
Możesz również zmodyfikować swoje zapytanie, aby wyglądało na:
$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!";
}
Edycja:
Dodawanie z komentarza pozostawionego przeze mnie do OP:
Twoja funkcja weryfikacji musi mieć połączenie z twoją bazą danych, co moim zdaniem dzieje się tutaj (zakres zmienny). Więc musisz albo użyć global $con;
lub przekaż połączenie (zmienną) do swojej funkcji (co jest lepsze w większości przypadków).
Nie wiem, czy robisz „include” dla funkcji, a jeśli tak, to na tym polega drugi problem.
Np.:function VUP($con, $check, $valid){
lub function VUP($check, $valid){ global $con;
- Spróbuj obu. Użyj $result = mysqli_query($con, $query) or die(mysqli_error($con));
zamiast tego, który masz teraz.