1

何らかの理由で、私の PHP ログイン スクリプトは「無効な電子メールとパスワードの組み合わせ」を返し続けますが、正しい電子メールとパスワードを入力していることはわかっています。誰かが私が間違っているかもしれないことを見ていますか?

<?php

$email= $_POST['email'];
$password= $_POST['password'];

if (!empty($email) && !empty($password)) {

    $connect= mysqli_connect("localhost", "root", "", "si") or die('error connecting with the database');
    $query= "SELECT user_id, email, password FROM users WHERE email='$email' AND            
    password='$password'";
    $result= mysqli_query($connect, $query) or die('error with query');

    if (mysqli_num_rows($result) == 1) {
        $row= mysqli_fetch_array($result);
        setcookie('user_id', $row['user_id']);
        echo "you are now logged in";
    } else {
        echo "invalid username/password combination";
    }

} else {
    echo" you must fill out both username and password";
}

?>
4

4 に答える 4

2

コードは正常に見えます。私は以下をチェックします:

クエリが機能していることを確認します。クエリをエコーアウトして、データベースのDBプログラムで実行し、結果を確認します。

その電子メール/パスワードの組み合わせで複数のユーザーがいないことを確認してください-それはあなたのカウントチェックを邪魔します。

投稿の詳細をチェックし、データベースにあるものと正しいことを確認してください(空白などがないこと)。

最後に、コードを適切にインデントしてレイアウトする方がよいでしょう。ここで読むのがどれほど簡単かを確認してください:http: //codepad.org/DmtMuTpC

于 2012-04-10T23:33:30.583 に答える
2

私はそれを次のように言います。

if (mysqli_num_rows($result) > 0)

それ以外は、コードは機能するはずです。$_POST 変数に含まれるべきと思われるものが含まれていることは確かですか? このユーザーとパスの組み合わせがデータベースに存在することを確認しますか?

于 2012-04-10T23:30:24.143 に答える
1

whenmysqli_num_rows ( $result )が と等しくないことを気にする必要があります ... と がデータベースに直接存在する1かどうかを確認する必要があると思いますusername.passwordinvalid username/password combination

まだ追加の問題がある場合はお知らせください

于 2012-04-10T23:25:56.753 に答える
0

データベースに重複データがあったため、エラーが表示されていました。

于 2012-04-10T23:53:48.377 に答える