防止同一用户同时登陆
protected void btn_OK_Click(object sender, EventArgs e)
{//登录
String code = CodeTest.Code;
if (!this.code.Text.Trim().Equals(code))
{
Response.Write("<script>alert('验证码错误!');</script>");
return;
}
UserEntity user = UserBiz.LoginUser(name.Text, MD5Biz.Get_MD5_Method3(pwd.Text));
if (user == null)
{
Response.Write("<script>alert('用户名或密码错误!')</script>");
return;
}
else
{
string ip = GetClientIPBiz.GetClientIP();
string cookieName = Request.Cookies["Username"] == null ? "" : Request.Cookies["Username"].Value;
if (UserBiz.UserIsLogin(name.Text) == 1 && (DateTime.Now - user.UserLastTime).TotalMinutes < 30 && user.UserLastIP == ip && cookieName == name.Text)
{//第二次在同一机子上30分钟内登陆,并且用Cookie防止在同一IP二个账号登陆
}
else if (UserBiz.UserIsLogin(name.Text) == 1 && user.UserLastIP != ip && (DateTime.Now - user.UserLastTime).TotalMinutes < 30)
{
Response.Write("<script>alert('该用户已在IP为:" + user.UserLastIP + "的机子上已登录!')</script>");
return;
}
else
{//第一次登陆
Response.Cookies["Username"].Value = name.Text;//设置Cookie
}
int scorse = 0;
if ((DateTime.Now -user.UserLastTime).Days > 0)
{//当日登陆第一次加积分
scorse = IntegralBiz.AddIntegralCount(13);
}
else
{
scorse = 0;
}
BindState(user, ip, scorse);
Response.Cookies["Username"].Expires = DateTime.Now.AddMinutes(30);
}
}
private void BindState(UserEntity user, string IP, int scorse)
{
UserBiz.UpdateUserIsLoginState(1, name.Text);
Session["User"] = user;
//最后登录时间与IP
UserBiz.UpdateUserInfoTimeandIP(user.UserID, DateTime.Now, IP, scorse);
zhongxin.Visible = true;
login.Visible = false;
}