私はログインTextBoxに入力したものに基づいて2つのテーブルでテストをしようとしているので、LoginNameがテーブル "Redacteur"にある場合はテストします。他のテーブル "Membres"を見る新しいコマンドを作る。 問題:このコマンドは、 "Redacteur"テーブルにあるloginNameを入力したときに機能しますが、Membresのテーブルに属するloginNameを入力すると、コード内で要求しているページにリダイレクトされません。私はそれがElseセクションに入ることさえないと思う。Connectionの2番目のコマンドが機能しないのはなぜですか?
using(SqlConnection connect = new SqlConnection(cs))
{
SqlCommand cmd = new SqlCommand("select * from Redacteurs where RedCode= @lg", connect);
cmd.Parameters.AddWithValue("@lg", TextLogIn.Text);
connect.Open();
//cmd.ExecuteNonQuery();
SqlDataReader rd = cmd.ExecuteReader();
if (rd.HasRows)
{
rd.Read();
Session["code"] = rd["RedCode"].ToString();
Session["loginname"] = TextLogIn.Text;
Session["pass"] = TextPass.Value;
Response.Redirect("RedacteurPage.aspx?Redact="
+ Session["loginname"].ToString());
rd.Close();
}
else
{
cmd = new SqlCommand("select * from Membres where LoginMembre = @lm", connect);
cmd.Parameters.AddWithValue("@lm", TextLogIn.Text);
//cmd.ExecuteNonQuery();
SqlDataReader rd2 = cmd.ExecuteReader();
if (rd2.HasRows)
{
rd2.Read();
Session["code"] = rd2["MembreCode"].ToString();
Session["loginname"] = TextLogIn.Text;
Session["pass"] = TextPass.Value;
Response.Redirect("ProductCatalogue.aspx?user=" + rd2["FullName"]);
rd2.Close();
}
}
}
ここでSQLインジェクション用のドアを開けています。 – Kramb
'それはElseセクションにも入っていないと思います。デバッガを使って確認してください。 –
' cmd = new SqlCommand(...) '行を' cmd.CommandText = "に変更してみてください。NEW SQL" – Kramb