2つのアクセスレベルを持つログインシステムを作成しようとしています。アクセスレベルが1の場合は「介護者のホームページ」を、レベルが2の場合は「管理者ページ」を受け取ります。ログインフォームには、ユーザーがボタンをクリックしてtryLogin変数がtrueを返すと、データベースのユーザー名と一致するデータベースのアクセス許可がデータベースから取得されたときに、データベースの資格情報に対してユーザー名とパスワードを検証する変数があります。フィールド2つのアクセスレベルを持つログインシステム
フォームのいずれかを読み込む代わりに、無効なログイン資格情報が表示されます。 Iveはこれに取り組むのに長時間を費やしてしまいました。私はこれが問題を十分に説明してくれることを願っています。
public bool tryLogin(string uname, string pword)
{
MySqlConnection con = new MySqlConnection("host="";user="";password=""; database="";");
MySqlCommand cmd = new MySqlCommand("SELECT * FROM Staff WHERE username = '" + uname + "' AND password ='" + pword + "';");
cmd.Connection = con;
con.Open();
MySqlDataReader reader = cmd.ExecuteReader();
if (reader.Read() != false)
{
if (reader.IsDBNull(0) == true)
{
cmd.Connection.Close();
reader.Dispose();
cmd.Dispose();
return false;
}
else
{
cmd.Connection.Close();
reader.Dispose();
cmd.Dispose();
return true;
}
}
else
{
return false;
}
}
private void LoginBT_Click(object sender, EventArgs e)
{
if (tryLogin(uname.Text, pword.Text) == true)
{
MySqlConnection con = new MySqlConnection("host="";user="";password=""; database="";");
MySqlCommand cmd2 = new MySqlCommand("SELECT access_level FROM Staff WHERE username = '" + uname + "';");
cmd2.Connection = con;
con.Open();
MySqlDataReader reader = cmd2.ExecuteReader();
if (cmd2.Equals("1"))
{
this.Hide();
CarerHomePage CarerHomePage = new CarerHomePage();
CarerHomePage.Show();
}
if (cmd2.Equals("2"))
{
this.Hide();
AdministratorHome AdministratorHome = new AdministratorHome();
AdministratorHome.Show();
}
else
{
MessageBox.Show("Invalid Login Credentials");
}
}
}
}
}
! [SQLインジェクション](http://en.wikipedia.org/wiki/SQL_injection)の脆弱性あなたは[Little Bobby Tables](http://xkcd.com/327/)について聞いたことがありますか? – Cameron
@Cameron:lmao。 – Paul
「これに長時間取り組んできました。」と言われると、デバッガを使用していない可能性があります。あなたはVisual Studioの助けなしにこれを書いていますか?もしそうなら、[Visual Studio Express](http://www.microsoft.com/express/)を使ってC#のプログラミングをより快適にすることを考えてください。 –