我是C#的新手。我的数据库默认值为0。
中有激活数据类型位我的问题是如何在激活电子邮件发送之前阻止用户登录 注册完成后,数据库中的激活为空,但仍然可以登录用户如何解决此问题请帮助。
这是我的代码:
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Loginbtn_Click(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["RegisterConnectionString"].ConnectionString);
conn.Open();
string checkuser = "select count(*) from UserData where UserName='" + UserName.Text + "'";
SqlCommand com = new SqlCommand(checkuser, conn);
int temp = Convert.ToInt32(com.ExecuteScalar().ToString());
conn.Close();
if (temp == 1)
{
conn.Open();
string checkPasswordQuery = "select password from UserData where UserName='" + UserName.Text + "'";
SqlCommand passComm = new SqlCommand(checkPasswordQuery, conn);
string password = passComm.ExecuteScalar().ToString().Replace(" ", "");
if (password == Password.Text && UserName.Text == "Admin" )
{
Session["New"] = UserName.Text;
Response.Redirect("~/Admin/UserManager.aspx");
}
if (password == Password.Text)
{
Session["New"] = UserName.Text;
Response.Redirect("~/Account/UserPage.aspx");
}
else
{
invalidlbl.Text = "Please check your username and password";
}
}
}
这是我的数据库的图像:
答案 0 :(得分:0)
你说激活在数据库中是空的。因此,当用户尝试登录时,请抓取并检查数据库中的activation
是否仍为null
,如果是,那么只需向用户发送消息,说明首先激活您的帐户和将他/她重定向到主页。
编辑:根据您的评论,不会给您完整的代码,但这是我说的一个例子。顺便说一句,考虑使用SQL参数来避免SQL注入攻击。
string checkuser = "select count(*) from UserData where UserName=@uname and activation != null";
SqlCommand com = new SqlCommand(checkuser, conn);
com.Parameters.Add("@uname", SqlDbType.VarChar).Value = UserName.Text.Trim();
int temp = Convert.ToInt32(com.ExecuteScalar());
if(temp > 0)
{
// do processing
}
else
{
// not activated ... throw alert
}