以前に回答があったとあなたが言う前に、私は文字通りすべてを試しました。
2 つの WHERE 句を使用して mysqli クエリの行数をカウントしようとしています。
if (isset($_POST['member_name']) and isset($_POST['memeber_password'])) {
$member_name_input = mysqli_real_escape_string($query, $_POST['member_name']);
$member_password_input = mysqli_real_escape_string($query, $_POST['member_password']);
$result = mysqli_query($query, "SELECT count(*) AS member_count FROM `members` WHERE `member_name` = '$member_name_input' AND `member_password` = '$member_password_input'") or die(mysqli_error($query));
$counter = $row['member_count'];
if ($counter = 1) {
$result = mysqli_query($query, "SELECT * FROM `members` WHERE `member_name`='$member_name_input' AND `member_password`='$member_password_input'") or die(mysqli_error($query));
$row = mysqli_fetch_array($result);
$member_suspended = $row['member_suspended'];
$member_validation = $row['member_validation'];
}
if ($member_suspended < time() and $member_validation = 2) {
$_SESSION['member_id'] = $row['member_id'];
echo $counter;
} elseif ($member_suspended >= time()) {
$suspension_date = date('d. m. y.', $member_suspended);
echo '<div class="left_container"><h3>You are suspended until '.$suspension_date.'.</h3></div>';
} elseif ($member_validation = 1) {
echo '<div class="left_container"><h3>Your account has not been confirmed, yet.</h3></div>';
} else {
echo '<div class="left_container"><h3>Login unsuccessful.</h3></div>';
}
}
私の問題は、無効なパスワードやユーザー名 (組み合わせがテーブルに存在しない) でログインしようとすると、$counter が 1 のままで、最初の if ステートメントの要件を満たしていることです。
私は多くの方法で行を数えようとしましたが、どれもうまくいきませんでした。
他の試みのいくつかは次のとおりです。
$counter = 0;
while ($row = mysqli_fetch_array($result)) {
++$counter;
}
と
$counter = mysqli_num_rows($result);
ユーザーを正常にログインさせ、無効なログイン試行に対してエラーメッセージを表示する方法を考え出そうとしています。
時間を割いてこれをお読みいただき、お役に立てていただきありがとうございます。:)