sql >> データベース >  >> RDS >> Mysql

2つの異なるテーブルからユーザーまたは管理者としてログインする

    emailで両方のテーブルを指定する必要があります 列:

    SELECT * 
    FROM sollicitant, bedrijf 
    WHERE sollicitant.email = '$inputEmail' 
    AND bedrijf.email = '$inputEmail'
    

    もう1つの可能性は、エイリアス'で明示的なJOINを使用することです(エイリアス'は単に短縮するためのものであり、使用する必要はありません):

    SELECT *
    FROM sollicitant s, bedrijf b
    ON s.email = b.email
    WHERE s.email = '$inputEmail' 
    

    これを行うことは、1つのテーブルの1つの列のeamilをJOINとして説明するだけでよいことを意味します。 一致する電子メールを持つ行のみを取得するようにします。クエリが空の場合、メールは両方に存在しません。

    編集

    ユーザーの役割に基づいてどこに行くかを決定する場合は、すべてのユーザーを1つのテーブルに統合して、ユーザーの役割を示す列を作成する必要があります。

    SELECT * FROM users WHERE email = '$inputEmail' 
    

    次に、データをフェッチした後のPHP:

    if('sollicitant' == $row['role']) {
        header('Location: sollicitant.php');
        exit();
    } elseif ('bedrijf' == $row['role']) {
        header('Location: befrijf.php');
        exit();
    } else {
        echo 'There is a problem with your login.';
    }        
    

    警告!

    ...他の人が言ったように...

    Little Bobby スクリプトSQLインジェクション攻撃のリスクがあります。 文字列をエスケープする> 安全ではありません!

    人々が「私はそれほど遠くない...」と言うのは嫌いです... または「このサイトは公開されません...」 または「学校専用なので、セキュリティは関係ありません...」 。教師と教授が最初からセキュリティについて話していなければ、彼らはそれを間違っています。それらに挑戦します。彼らは、学生が後で学ばなくてはならない、ずさんで危険なコーディングの実践を教えています。 「後でセキュリティを追加します...」と言われるのも嫌いです。 または「セキュリティは今は重要ではありません...」 または「セキュリティリスクを無視する...」

    プレーンテキストのパスワードは絶対に保存しないでください! PHPの組み込み関数 を使用してください パスワードのセキュリティを処理します。 5.5未満のPHPバージョンを使用している場合は、password_hash()を使用できます。 互換性パック パスワードをエスケープする必要はありません または、ハッシュする前に他のクレンジングメカニズムを使用します。そうすることで変更 パスワードと不要な追加コーディングを引き起こします。




    1. サーバー内のデータベースに接続するフラッター

    2. postgresqlhibernateでuserという名前のテーブルを使用できません

    3. PHP:mysql_connectがFALSEを返さない

    4. ドラッグアンドドロップによるTreeViewノードの再配置