$2y$10$zzZCN7UlukvY2skb3ELVp.4y3Oc7NJTEsFyqdstqYxT
хешът е с дължина само 50 и е невалиден/твърде кратък и както казах, MySQL ще се провали безшумно; докладването за грешки/проверката не би помогнало тук.
Дължината на колоната на паролата трябва да бъде 60 (предполага се 255), така че първоначално не е била съхранена правилно.
Ще трябва да изчистите колоната/или таблицата си с парола, да увеличите дължината на колоната и да започнете отначало.
Справка:
Можете също да промените заявката си, за да се чете като:
$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!";
}
Редактиране:
Добавяне от коментар, който оставих към ОП:
Вашата функция за проверка трябва да има връзка с вашата база данни, това според мен се случва тук (променлив обхват). Така че ще трябва да използвате или global $con;
или предайте връзката (променлива) към вашата функция (което е по-добре в повечето случаи).
Не знам дали правиш "включване" за функцията и ако е така, значи това е другият проблем.
Т.е.:function VUP($con, $check, $valid){
или function VUP($check, $valid){ global $con;
- Опитайте и двете. Използвайте $result = mysqli_query($con, $query) or die(mysqli_error($con));
вместо този, който имате сега.