这段代码该怎么改。。。郁闷~

zhezhe1990 2010-06-19 10:45:44

protected void Page_Load(object sender, EventArgs e)
{
int errNum;
string passwords;
int status;
//if (CheckForm())
SqlConnection con = new SqlConnection(ConfigurationManager.AppSettings["constr"]);
string sql1 = "select adminID, adminName, adminPwd,adminRight, errNum, status from [admin_Login] where adminName = '" + Users.Text + "'";
sql1 = sql1.Replace("##adminName", Users.Text.Trim());
SqlCommand com = new SqlCommand(sql1, con);
con.Open();
SqlDataReader sqldr = com.ExecuteReader();

if (sqldr.Read())
{ //从数据库中读出错误次数 密码 状态
errNum = (int)sqldr["errNum"];
passwords = sqldr["adminPwd"].ToString();
status = (int)sqldr["status"];
}
else
{
return;

}

if (errNum > 3)//判断错误次数是否超过3次,如果超过3次,则将数据库中状态置为1
{
Response.Write("<script language='javascript'>alert('您输入密码错误次数超过三次,账号冻结!')</script>");
sql1 = @"update [admin_Login] set status=1 where errNum>3";
}
else
{ //判断用户输入密码与数据库中密码是否一致
if (sqldr["adminPwd"].ToString() == Pwd.Text.Trim())
{
if (status == 0)//判断用户状态是否为0,为0则成功登录,为1则为无效账户
{

MessageBox.Show("登录成功!");
sql1 = @"update [admin_Login] set errNum=0 where status=0";//若登录成功,则将errNum次数置为0


}
else
{
Response.Write("<script language='javascript'>alert('您的账号已被冻结!')</script>");
}
}
else
{
errNum++;//如果密码输入错误,则在数据库中将错误次数加一次
sql1=@"update [admin_Login] set errNum = errNum+1";
}


}

}

protected void imgLogin_Click(object sender, ImageClickEventArgs e)
{
this.Label1.Text = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(this.Pwd.Text.Trim(), "md5");
string username = Users.Text.ToString();
string password = Pwd.Text.ToString();

if (username == "" || password == "")
{
Response.Write("<script language='javascript'>alert('请输入账号名和密码!')</script>");
}
else
{
SqlConnection conn = new SqlConnection(ConfigurationManager.AppSettings["constr"]);
string sql = "select * from admin_Login where adminName='" + Users.Text + "'and adminPwd='" + Pwd.Text + "'";
SqlCommand sqlcmd = new SqlCommand(sql, conn);
conn.Open();
SqlDataReader dr = sqlcmd.ExecuteReader();
if (dr.Read())
{
Session["Users"] = dr["adminName"].ToString();
Response.Redirect("../main.aspx");
dr.Close();
conn.Close();
}
else
{
Response.Write("<script language='javascript'>alert('用户名或密码不正确!')</script>");
Users.Text = "";
Users.Focus();
}
}
}



我想实现密码输入三次账户就冻结,可是怎么都实现不了啊。。输了五六次还是提示密码错误。
数据库好像也没有读取到~ 老半天了没半点进展 检查不出错误在哪 菜鸟求救!!!
...全文
184 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
wyq29 2010-06-19
  • 打赏
  • 举报
回复
感觉你的思路完全混乱 而且你的代码错误百出

page_load 里啥也不写

按钮事件里

if( 填写为空)
{
提示 空 返回;
}
else
{
查询数据库
if(找到用户和密码)
{ 获取状态值
if(状态=0)
{
提示冻结 返回
}
else
{ 更新err为0
登录成功 }

}
else
{
更新err
读取err
if(err>=3)
{ 登录失败 提示超过3次 返回
}
else
{
err加1 更新
提示登录失败 返回
}
}
}

好好理清自己思路!!

还有就是 如果用别人的用户登录 岂不是err就是别人给我增加的??
TiramisuH 2010-06-19
  • 打赏
  • 举报
回复
public static int count 每次点击button count++; 如果count>2 就不可以了
笨方法 嘿嘿
sunzhiguolu 2010-06-19
  • 打赏
  • 举报
回复
不懂帮顶....
doubleu2005 2010-06-19
  • 打赏
  • 举报
回复
先看看输入错误一次后有没有保存这个次数,如果保存了,那就可以判断了,超过3次禁止输入呗
木木 2010-06-19
  • 打赏
  • 举报
回复
先检查下数据库中的值改变没,再把你修改后的代码贴出来看哈
zhezhe1990 2010-06-19
  • 打赏
  • 举报
回复
拿出来了 另写了个公共setbind()
判断都在里面,还是不行啊。。。
求高手帮忙改改~~~
木木 2010-06-19
  • 打赏
  • 举报
回复
把page_load中判断的东西拿出来写吧,
yynnyy1122 2010-06-19
  • 打赏
  • 举报
回复
你方法都写在load事件里面了肯定不行啊
辉一哥 2010-06-19
  • 打赏
  • 举报
回复
Httcontex.Current.Session["错误"]+=1;
if (Httpcontex.Current.Session["错误"]>=0)
{
//你的帐号冻结操作
}
辉一哥 2010-06-19
  • 打赏
  • 举报
回复
这个你必需把错误的信息保存在 Session中,或者Cookie中的
wjp_116 2010-06-19
  • 打赏
  • 举报
回复
楼主对网页的load事件还是不是太理解其执行过程吧,每次load的时候都会重新生成errNum这个变量那么即使登录错误那errNum也顶多变成1,它不会再增加了,所以你要把这个变量放到外边去声明,变成一个全局变量才可以
SuperTar 2010-06-19
  • 打赏
  • 举报
回复
杯具得很 建议在点击事件中像数据库里面进行判断
zhezhe1990 2010-06-19
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 wyq29 的回复:]

……
[/Quote]


protected void Page_Load(object sender, EventArgs e)
{

}
protected void imgLogin_Click(object sender, ImageClickEventArgs e)
{
string username = Users.Text.ToString();
string password = Pwd.Text.ToString();
int errNum;
int status;

if (username == "" || password == "")
{
Response.Write("<script language='javascript'>alert('请输入账号名和密码!')</script>"); //提示 空 返回
}
else
{
SqlConnection conn = new SqlConnection(ConfigurationManager.AppSettings["constr"]);
string sql1 = "select * from admin_Login where adminName='" + Users.Text + "'and adminPwd='" + Pwd.Text + "'";
SqlCommand sqlcmd = new SqlCommand(sql1, conn);
conn.Open();
SqlDataReader dr = sqlcmd.ExecuteReader();

if (dr.Read())
{
status = (int)dr["status"]; //获取状态值

if (status == 1) // 状态=1 ,冻结
{
Response.Write("<script language='javascript'>alert('您的账号已被冻结!')</script>");


}
else // //更新err为0 登录成功
{
sql1 = @"update [admin_Login] set errNum=0 where status=0";
}

}
else
{

sql1 = @"update [admin_Login] set errNum +=1"; //更新err

if (dr.Read())
errNum = (int)dr["errNum"]; // 读取err


if (errNum >= 3) 此处出错:使用了未赋值的局部变量“errNum”
//登录失败 提示超过3次 返回
{
Response.Write("<script language='javascript'>alert('密码错误次数超过三次,禁止登陆!')</script>");
return;
}
else
{
sql1 = @"update [admin_Login] set errNum +=1"; //err加1 更新
Response.Write("<script language='javascript'>alert('用户名或密码不正确!')</script>");
}
}
}

}



照您的思路改了.. 又出现个错误.. 我也知道我的思路很混乱。刚接触c#,很多东西都不知道如何入手,很是心急。 接下来我会从最基础的.net学起,但是目前这个账号冻结还是想完成。麻烦各位了。。。

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧