$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!";
}
編集:
OPに残したコメントから追加:
検証機能では、データベースに接続する必要があります。これは、ここで発生していると私が感じていることです(可変スコープ)。したがって、global $con;
のいずれかを使用する必要があります または、接続(変数)を関数に渡します(ほとんどの場合、これが適しています)。
関数の「インクルード」を実行しているかどうかはわかりません。実行している場合は、それが他の問題です。
つまり、function VUP($con, $check, $valid){
またはfunction VUP($check, $valid){ global $con;
-両方試してください。 $result = mysqli_query($con, $query) or die(mysqli_error($con));
を使用します あなたが今持っているものの代わりに。