C# Comment Connexion Séparée Pour Les Admin Et Utilisateur
Donc, fondamentalement, Admin et Utilisateur accède à différents windows, voici le code
private void cmdEnter_Click(object sender, EventArgs e)
{
if (txtUsername.Text == "" && txtPassword.Text == "") //Error when all text box are not fill
{
MessageBox.Show("Unable to fill Username and Password", "Error Message!", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else if (txtUsername.Text == "") //Error when all text box are not fill
{
MessageBox.Show("Unable to fill Username", "Error Message!", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else if (txtPassword.Text == "") //Error when all text box are not fill
{
MessageBox.Show("Unable to fill Password", "Error Message!", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
try
{
string myConnection = "datasource=localhost;port=3306;username=root";
MySqlConnection myConn = new MySqlConnection(myConnection);
MySqlCommand SelectCommand = new MySqlCommand("select * from boardinghousedb.employee_table where username='" + this.txtUsername.Text + "' and password='" + this.txtPassword.Text + "' ;", myConn);
MySqlDataReader myReader;
myConn.Open();
myReader = SelectCommand.ExecuteReader();
int count = 0;
while (myReader.Read())
{
count = count + 1;
}
if (count == 1)
{
MessageBox.Show("Username and Password . . . is Correct", "Confirmation Message", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
this.Hide();
Menu mm = new Menu();
mm.ShowDialog();
}
else if (count > 1)
{
MessageBox.Show("Duplicate Username and Password . . . Access Denied", "Error Message!", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
MessageBox.Show("Username and Password is Not Correct . . . Please try again", "Error Message!", MessageBoxButtons.OK, MessageBoxIcon.Error);
myConn.Close();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
mais je ne sais pas comment, d'autres tutoriels parle de la base de données locale, mais je suis en utilisant MySQLVoici la table des employés, title=admin ou un utilisateur
- Pour commencer, ce code est grande ouverte à l'injection SQL. Vous allez avoir à regarder dans les requêtes paramétrées. Côté forme, c'est pas vraiment clair pour moi ce que vous demandez. En quoi est-ce code ne fonctionne pas? Quel est le problème?
- Il semble que je peux me connecter sur l'un de vos comptes, tant que mon mot de passe est
PLAIN WRONG' UNION SELECT * from boardinghousedb.employee_table LIMIT 1; --
- votre chèque en ce qui concerne
if count ==1
est correcte.. si vous êtes à la vérification des doublons, c'est faux.. vous avez besoin de la structure de votre base de données de sorte que vous avez des Id pour les utilisateurs et les administrateurs et la structure de la requête retour .. alors dans votre requête si le nom d'utilisateur et mot de passe sont corrects, puis vérifier si ils essaient d'accéder à l'Admin, alors qu'ils devraient être un utilisateur puis afficher un message et d'apprendre comment utiliser lereturn
mot-clé après vérification des messages.. si vous avez d'utilisateur vide et le mot de passe, vous devez showmessage et immédiatementreturn
sens de la sortie que de la méthode.. - vous avez besoin de re-travailler un peu de votre logique..
- le code fonctionne bien . .C'est juste que je l'ai d'administration et de l'Employé va à différentes windows lors de la connexion . .Comment puis-je le faire ? . ."titre" est le nom de l'attribut dans la base de données pour l'administration ou l'Employé
Vous devez vous connecter pour publier un commentaire.
Vous avez quelques problèmes avec votre code.
Votre requête est sujette à une Injection SQL. L'Injection SQL est une façon d'injecter des Commandes SQL à votre requête. L'utilisateur peut écrire
someName' OR 1=1--
dans votre zone de texte nom d'utilisateur, et votre requête pourrait se traduire commeselect * from boardinghousedb.employee_table where username='someName' OR 1=1--
. Remarque le--
en fin de compte, ce qui rend le reste de la requête en commentaire. Vous pouvez en lire plus à cette lien. Si vous êtes autorisé, je vous suggère de regarder dans le EntityFramework. C'est vraiment puissant outil pour interroger votre base de données.finally
bloc après la capture jusqu'à la fermeture de votre db connections.Liés à votre question, si vous voulez distinguer les admin de l'utilisateur, vous devez introduire un type de rôle, ou au moins bool valeur là où vous l'état
IsAdmin
pour cet utilisateur.Vous pouvez ensuite mettre votre code pour une fonction séparée/fonctions/classes, en fonction de vos besoins, et à la requête des utilisateurs avec
WHERE Role='Admin'
ou similaire.Pour un exemple
ou
ou toute autre application que vous aimez.
Et puis re-utiliser de façon suivante:
EDIT:
Vous pouvez également introduire de nouveaux colonne de votre tableau, caled
UserRole
. Pour la simplicité, je vais juste modifier votre code comme il est, et vous pouvez re-facteur de ce que vous apprenez.votre code
ce code a manque son type de retour le message d'erreur indique