4

ユーザーがデータベースに入力したユーザー名とパスワードを最も正しい方法で確認するにはどうすればよいですか?

In c++, we used to verify by using if-else:
    if((user == "username")&&(pass == "password")){
             cout<<"You are now logon!";
    }

java-mysql では、正しい軌道に乗っているかどうかわかりません:

ログインボタン

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:

        user = jTextField1.getText();
        pass = jPasswordField1.getPassword();
        login();
}

メソッド/機能

private void login() {

        try {
                if (user != null) {
                sql = "Select * from users_table Where username='" + user + "'";
                rs = stmt.executeQuery(sql);

                rs.next();
                username = rs.getString("username");
                password = rs.getString("password");

            }
        } 
    catch (SQLException err) {
            JOptionPane.showMessageDialog(this, err.getMessage());
        }

}

ユーザーが入力したユーザー名とパスワードがデータベース内のものと一致した場合、ユーザーは新しい jFrame にリダイレクトされます。それ以外の場合は、無効なユーザー名またはパスワードを示すメッセージ ダイアログがポップアップします。誰かが私のコードを手伝ってくれますか? mysql で if-else ステートメントを使用する方法がわかりません。

ありがとう!:)

4

5 に答える 5

2
  • ハッシュ暗号化パスワードは常にデータベースに保存してください。パスワード暗号化の詳細については、JASYPTを参照してください。
  • ユーザーが入力したパスワードを暗号化し、暗号化された2つのパスワードを比較します
  • データベースのクエリ中にパラメータ化されたクエリを使用する
于 2013-02-21T06:31:09.677 に答える
2

以下のコードを実装します。

private void login() {
    try {
        if (user != null && pass != null) {
            String sql = "Select * from users_table Where username='" + user + "' and password='" + pass + "'";
            rs = stmt.executeQuery(sql);
            if (rs.next()) {
                //in this case enter when at least one result comes it means user is valid
            } else {
                //in this case enter when  result size is zero  it means user is invalid
            }
        }

        // You can also validate user by result size if its comes zero user is invalid else user is valid

    } catch (SQLException err) {
        JOptionPane.showMessageDialog(this, err.getMessage());
    }

}
于 2013-02-21T06:50:52.403 に答える
0

もう mySQL で何もする必要はありません。資格情報は既に取得しています。一例:

if ((user.equals(username)) && (pass.equals(password))) {
   JFrame newFrame = new JFrame();
} else {
   JOptionPane.showMessageDialog(null, "alert", "alert", JOptionPane.ERROR_MESSAGE); 
}
于 2013-02-21T06:40:41.283 に答える