0

2 つの mysql テーブルの詳細を使用してログインする方法を探しています。コードを作成し、すべて正常に動作しますが、ログインすると、電子メールまたはパスワードが正しくないというメッセージが表示され、正常にログインできます。

これが私のコードです:

if(isset($_POST['submit']))
{
    $email = $_POST['Email'];  
    $password = $_POST['password'];

    $checkUser1 = "SELECT * FROM table1 where theEmail  = '$email' AND thePass = '$password' ";
    $checkUser2 = "SELECT * FROM table2 where theEmail  = '$email' AND thePass = '$password' ";

    $run = mysql_query($checkUser1,$checkUser2);

    if (mysql_num_rows($run) > 0){
        $_SESSION['Email']= $email;   

        echo "<script>window.open('HomePage.php','_self')</script>";      
    } else {
        echo "<script>alert('incorrect email or password  !')</script>";
    }
}
4

2 に答える 2

2

私はあなたが次の事実をスキップするつもりです:

  1. パスワードを平文で保存しないでください。password_hash()代わりにbcrypt またはを使用します。
  2. 準備済みステートメント (PDO / mysqli) を使用し、非推奨のmysql_関数の使用を中止する必要があります。または、すべてのユーザー入力をエスケープしてください。
  3. ユーザー資格情報を格納するために単一のテーブルのみを使用する必要があります。

単純に JOIN を使用できます。

$checkUser = sprintf("SELECT * 
    FROM table1 
    INNER JOIN table2 USING (theEmail)
    WHERE table1.theEmail = '%s' AND table1.thePass = '%s'",
        mysql_real_escape_string($email),
        mysql_real_escape_string($password)
);
mysql_query($checkUser) or die("Oops!");
于 2013-07-26T22:14:24.467 に答える