以前にも同様の質問をしましたが、今は答えに近づいていると思います。
ユーザーがプロファイルにログインする前に、ユーザーの電子メール アドレスとパスワードを検証する機能があります。
電子メールが正しくない場合、エラー メッセージが生成されます。「一致するメールが見つかりません」と表示されます。
正しい電子メールとパスワードを入力しても、何も返されません。しかし、間違ったパスワードと間違った電子メールを入力すると、「一致する電子メールが見つかりません」と表示されます。同じことが、正しい電子メールでも間違ったパスワードでも発生します。
fetchAll
andで戻ろうとしましたfetchColum
が、正しい値を入力しても同じループが発生します。
何か案は ?
function valid_credientials($email,$password){
global $db;
$q = "SELECT * FROM user WHERE email = :email AND password =:password";
$query = $db->prepare($q);
$query->execute(array(":email" => $email, ":password" => $password));
$results = $query->fetchAll();
if($results !=FALSE && $query->rowCount() > 0) {
if($results[0]['password'] == $password){
$_SESSION['email'] = $email;
return $query->fetchAll($q,0)==1 ? true:false;
}
}
// return false by default
return false;
}
投稿が設定されています
if (isset($_POST['email'], $_POST['password'])) {
if (valid_credientials($_POST['email'], $_POST['password']) == false) {
$errors[] = 'No matching email found.';
}
if (empty($errors)) {
$_SESSION['email'] = htmlentities($_POST['email']);
header("Location: profile.php");
die();
}
}