0

以前に回答があったとあなたが言う前に、私は文字通りすべてを試しました。

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);

ユーザーを正常にログインさせ、無効なログイン試行に対してエラーメッセージを表示する方法を考え出そうとしています。

時間を割いてこれをお読みいただき、お役に立てていただきありがとうございます。:)

4

3 に答える 3

1
if ($counter = 1) {

これは常に= 1になります。

if ($counter == 1) {
于 2013-08-10T11:42:29.180 に答える
0

カウンターを設定する前に、結果から行をフェッチする必要があります。

変化する

$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'];

$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));
$row = mysqli_fetch_assoc($result);
$counter = $row['member_count'];
于 2013-08-10T11:42:40.970 に答える
0

次のクエリは私にとって完璧に機能します。

SELECT count(*) AS member_count FROM membersWHERE member_name= '$member_name_input' AND member_password= '$member_password_input'

一致するレコードが見つからない場合は 0 を返し、それ以外の場合は一致するレコードの数を返します。

于 2013-08-10T11:47:17.653 に答える