Comment faire pour vérifier le nom d'utilisateur et le mot de passe en Java-mysql?
Comment puis-je vérifier dans le plus droit chemin, le nom d'utilisateur et le mot de passe qui ont été entrés par l'utilisateur de la base de données?
In c++, we used to verify by using if-else:
if((user == "username")&&(pass == "password")){
cout<<"You are now logon!";
}
En java-mysql je ne sais pas si je suis sur la bonne voie:
Bouton De Connexion
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
//TODO add your handling code here:
user = jTextField1.getText();
pass = jPasswordField1.getPassword();
login();
}
Méthode/fonction
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());
}
}
Si le nom d'utilisateur et le mot de passe entré par l'utilisateur appariés avec ceux de la base de données, puis il est dirigé vers une nouvelle jFrame d'autre
boîte de dialogue de message pop-up disant invalide nom d'utilisateur ou mot de passe. Quelqu'un peut-il m'aider avec mes codes, je ne sais pas comment utiliser les if-else avec mysql;
Merci! 🙂
vous enregistrez les mots de passe en texte clair? espérons que ce n'est pas va être déployée.
Vous n'êtes pas à l'aide de PreparedStatement pour se prémunir contre les injections SQL...vous êtes obtenir les valeurs en clair...eh bien, ceux sont les deux problèmes majeurs que je vois. Aussi, je ne vois pas où vous êtes en train de faire une comparaison sur la valeur du mot de passe.
Vous n'êtes pas à l'aide de PreparedStatement pour se prémunir contre les injections SQL...vous êtes obtenir les valeurs en clair...eh bien, ceux sont les deux problèmes majeurs que je vois. Aussi, je ne vois pas où vous êtes en train de faire une comparaison sur la valeur du mot de passe.
OriginalL'auteur Gian7 | 2013-02-21
Vous devez vous connecter pour publier un commentaire.
Mettre en œuvre le code ci-dessous:
select ... where user=? and pass=?
Cela fonctionne, mais il est dangereux car il permet l'injection de code SQL. Vous devriez être en utilisant PreparedStatement au lieu de concating sélectionner le script sur votre propre. Donc: connexion.prepareStatement("select * from user_table where username = ? et le mot de passe = ?"); p.setString(1, "Tom") ....
Cette solution présente deux extrêmement les mauvaises pratiques: la concaténation de sale chaînes permettant l'injection SQL, et en supposant que les mots de passe sont stockées mot pour mot dans la base de données. Comme il est, il est activement nuisibles.
En plus des problèmes avec l'injection SQL, et le texte en clair des mots de passe en java est recommandé d'utiliser des char[] au lieu de Chaîne de caractères pour les mots de passe
OriginalL'auteur hayat
OriginalL'auteur Apurv
vous n'avez pas à faire quoi que ce soit avec mySQL plus. Vous avez déjà des informations d'identification.
Un Exemple:
euh...en fonction de VOTRE source... l'utilisateur et pass sont les entrées utilisateur, mot de passe et nom d'utilisateur thefields à partir de la base de données...
les chaînes doivent être comparés avec
equals
pas avec==
.bien sûr, vous avez raison. je l'ai montée.
OriginalL'auteur Obl Tobl
Utiliser des requêtes préparées avec une bibliothèque comme DButils qui permettrait de simplifier votre travail beaucoup.
En outre, n'utilisez pas de substitution de passer des paramètres tels que
select name from members where code =?
. Si vous avez de nombreux paramètres, créer un tableau d'objets et de les transmettre à un tableau d'objets tels queObjects[] parms = {code1,code2}
.OriginalL'auteur ath j
OriginalL'auteur savan patidar