以下のプログラムは現在、ユーザーのログインの詳細が正しいかどうかを確認しています。その後、ユーザーが管理者であるかどうかをチェックする次のセクションに進みます。現在、私はこれを正常に動作させようとしています。通常のユーザーはデータベースに 'user_admin' [null]と表示され、管理者はデータベースに1と表示されます。私は周りを見回して、誰かが私がそれをやっている方法でこれに関連する何かを尋ねたようです。SQLログインの確認 - ユーザータイプの確認
私のコードを見ると、AdminPanelを指し示すべきであるのに対し、通常のユーザーはUserPanelを指すはずです。これは私のプログラムが設定されているために人々はそこにアカウントを見ることができますが、管理者はアカウントを編集することができます。
これはコラージュプロジェクト用ですので、私はこのプログラムの簡潔さに取り組んでいます。
JLabel lblNewLabel = new JLabel("");
lblNewLabel.setIcon(new ImageIcon(PanelLogin.class.getResource("/image/Login.png")));
lblNewLabel.setBounds(118, 115, 100, 26);
lblNewLabel.addMouseListener(new MouseAdapter() {
@Override
public void mouseEntered(MouseEvent e) {
lblNewLabel.setIcon(new ImageIcon(PanelLogin.class.getResource("/image/Loginv2.png")));
}
@Override
public void mouseExited(MouseEvent e) {
lblNewLabel.setIcon(new ImageIcon(PanelLogin.class.getResource("/image/Login.png")));
}
@Override
public void mouseClicked(MouseEvent e) {
if (LoginAttempts < 3) {
try {
String Host = "removed";
String Name = "removed";
String Pass = "removed";
Connection conn = DriverManager.getConnection(Host, Name, Pass);
PreparedStatement pst = conn.prepareStatement("SELECT `user_name`, `user_pass` FROM `table_1` WHERE `user_name` = ? AND `user_pass` = ?");
pst.setString(1, textID.getText());
pst.setString(2, String.valueOf(passwordField.getPassword()));
ResultSet Result = pst.executeQuery();
if (Result.next()) {
String user =Result.getString("user_name");
try {
PreparedStatement pst2 = conn.prepareStatement("SELECT `user_admin` FROM `table_1` WHERE `user_name` = ?");
pst2.setString(1, user);
if (Result.next()) {
frmLotusLogin.dispose();
new UserPanel(user).frame.setVisible(true);
}
else {
frmLotusLogin.dispose();
new AdminPanelMain(user).frmLotusSecurity.setVisible(true);
}
}
catch (Exception exc){
}
}
else {
JOptionPane.showMessageDialog(null, "Incorrect Username/Password");
LoginAttempts = LoginAttempts + 1;
}
}
catch (Exception ex) {
System.out.println(ex);
JOptionPane.showMessageDialog(null, "An error occurred. Your Username/Password could be incorrect, "
+ "If error contiues to appear please contact support! Error Number: L1");
}
}
else {
JOptionPane.showMessageDialog(null, "You Have Entered The Wrong Password Too Many Times, You are now locked out!");
}
}
});
私が間違って行ったことや正しく検証するために変更する必要があることを発見した人には、事前に感謝します。何が起こっているのかについてさらに詳しい情報が必要な場合は、お気軽にお問い合わせください。最初の提案の後
try {
String Host = "";
String Name = "";
String Pass = "";
Connection conn = DriverManager.getConnection(Host, Name, Pass);
PreparedStatement pst = conn.prepareStatement("SELECT `user_name`, `user_pass` FROM `table_1` WHERE `user_name` = ? AND `user_pass` = ?");
pst.setString(1, textID.getText());
pst.setString(2, String.valueOf(passwordField.getPassword()));
ResultSet Result = pst.executeQuery();
if (Result.next()) {
String user = Result.getString("user_name");
try {
PreparedStatement pst2 = conn.prepareStatement("SELECT `user_admin` FROM `table_1` WHERE `user_name` = ?");
pst2.setString(1, user);
ResultSet Result2 = pst2.executeQuery(); // added
if (Result2.next()) { // modified
System.out.println("Test");
frmLotusLogin.dispose();
new UserPanel(user).frame.setVisible(true);
} else {
frmLotusLogin.dispose();
new AdminPanelMain(user).frmLotusSecurity.setVisible(true);
}
} catch (Exception exc) {
// do something here !
}
}
else {
JOptionPane.showMessageDialog(null, "Incorrect Username/Password");
LoginAttempts = LoginAttempts + 1;
}
}
catch (Exception ex) {
System.out.println(ex);
JOptionPane.showMessageDialog(null, "An error occurred. Your Username/Password could be incorrect, "
+ "If error contiues to appear please contact support! Error Number: L1");
}
}
else {
JOptionPane.showMessageDialog(null, "You Have Entered The Wrong Password Too Many Times, You are now locked out!");
}
}
});
これは、ユーザーが管理者かどうか
これは非常に参考になりますが、あなたの提案は私が改善できるところを示しています。これは現在のところ問題は解決していませんが、管理者がログオンするとユーザーパネルに行くようになりました。私はあなたの編集提案を使って追加した変更を表示するために投稿を編集しようとしています。 –
2番目のクエリの結果がある場合はAdminPanelが必要で、条件を逆転するために編集するだけです。 – Berger
私のコードの下に私のテーブルのレイアウトを追加して、管理設定の様子を表示しました。また、結果を逆転させるために提案した編集を試してみましたが、今は管理ペインを開くだけです。私のコードが管理者検証でどのように機能するかを理解するのに役立つことを願っています。申し訳ありません問題があります。 –