2012-04-10 6 views
1

何らかの理由で、私のPHPログインスクリプトが「無効な電子メール/パスワードの組み合わせ」を返し続けていますが、正しい電子メールとパスワードを入力しています。誰かが私が間違っているかもしれないものを見ていますか?あなたはmysqli_num_rows ($result)は、私はあなたがやるべきだと思う何... 1に等しくないときusernamepasswordがデータベースに直接存在するかどうかを確認.....それが唯一の論理的な理由であることを得ることを気にネストされたIf ... Elseステートメントを理解する

<?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"; 
} 

?> 
+1

あなたのコードを理解することは非常に困難です... – dqhendricks

+0

@dqhendricksただそれを編集しました! :-) –

+0

@dqhendricksソースでうまくいきます.SOは標準の代わりに4つのスペースとして扱います。 – tobyodavies

答えて

1

それでも、追加の問題が発生した場合、スクリプトになぜあなたは、私はそれを言うために切り替えるだろう

+0

これは主に真ですが、なぜ「無効なユーザ名」というメッセージが表示されますか?それは同じパスワードと電子メールを持つ1人以上のユーザーがいる場合にのみ起こります... –

+0

2つ以上のユーザー名とパスワードを持つことはできませんが、 'if(mysqli_num_rows($ result)> 0 ) 'エラーがどこに来るのかを確認するだけです – Baba

2

知らせinvalid username/password combination

を取得する必要があります

if (mysqli_num_rows($result) > 0) 

しかし、それ以外のコードは動作するように見えます。 $ _POST変数には、あなたが考えるべきものが含まれていますか?このユーザーとパスの組み合わせがデータベースに存在していますか?

2

コードは正常です。次のことを確認します:

クエリが機能していることを確認してください。私は、クエリをエコーし​​、あなたのDBプログラムであなたのデータベース上で実行し、結果が何であるかを見てみましょう。

このメールとパスワードの組み合わせには、1人以上のユーザーがいないことを確認してください。カウントの確認がバグにつながります。

あなたの投稿の詳細を確認し、データベースにあるものに矛盾がないことを確認します。

最後に、あなたが適切にインデントし、コードをレイアウトしたほうが良いだろう、それはここで読むことがいかにはるかに簡単に参照:データベースに重複データがあったのでhttp://codepad.org/DmtMuTpC

関連する問題