このコードに問題があります:
$loginrequest = $mysqli->prepare(
"SELECT name, password, salt FROM users WHERE name = ? OR email = ?");
$loginrequest->bind_param("ss", $login, $login);
$loginrequest->execute();
$loginrequest->bind_result($name, $encrypted_password, $salt);
while ($loginrequest->fetch()) {
$hash = $this->checkhashSSHA($salt, $password);
if ($encrypted_password == $hash) {
return $name;
}
else {
return false;
}
}
ご覧のとおり、ユーザーのログインを確認したいのですが、パスワードが正しい場合はユーザー名を返し、そうでない場合は false を返します。
$mysqli
しかし、これを行っているクエリを閉じる必要はありませんか?
$loginrequest->close();
$mysqli->close();
値$name
は while ループでのみ使用できるため (これを正しく理解していれば)。前に文字列を宣言して$name
値に変更できたということですが、それを閉じる必要はありますか?
ちなみにstore_result
PHPのバージョンが古すぎて使えません。