Login.aspx页面
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Login.aspx.cs" Inherits="MyBlog.Login" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<style type="text/css">
.style1 { font-size: 13px; font-family: "黑体"; font-weight: normal; color: #0099FF; }
</style>
</head>
<body>
<form id="form1" runat="server">
<div>
<table align="center" style="width:400px; height:200px; ">
<tr style="text-align:center">
<td colspan="3"><span class="style1">用户登录</span></td>
</tr>
<tr>
<td style="width:100px"><span class="style1">账户</span></td>
<td colspan="2">
<asp:TextBox ID="txtUserName" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td><span class="style1">密码</span></td>
<td colspan="2">
<asp:TextBox ID="txtPassword" runat="server" TextMode="Password"></asp:TextBox>
</td>
</tr>
<tr>
<td><span class="style1">验证码</span></td>
<td style="width:150px">
<asp:TextBox ID="txtCode" runat="server"></asp:TextBox>
</td>
<td>
<asp:ImageButton ID="ImageButton1" ImageUrl="~/ValidateNum.aspx" runat="server" />
</td>
</tr>
<tr>
<td></td>
<td>
<asp:Button ID="btnlogin" runat="server" Text="登录" OnClick="btnlogin_Click" />
<asp:Button ID="btnregister" runat="server" Text="注册" PostBackUrl="~/Register.aspx" />
</td>
<td></td>
</tr>
</table>
</div>
</form>
</body>
</html>
Login.aspx.cs
public partial class Login : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnlogin_Click(object sender, EventArgs e)
{
//实例化公共类对象
DB db = new DB();
string UserName = txtUserName.Text.Trim();
string PassWord = db.MD5(txtPassword.Text.Trim());
string Num = txtCode.Text.Trim();
if(Session["ValidateNum"].ToString().ToLower()==Num.ToLower())
{
//获取用户信息
SqlDataReader dr=db.reDr("select * from User UserName="+UserName+" and PassWord ="+PassWord+ "" );
dr.Read();
if(dr.HasRows)//通过dr中是否包含行判断用户是否通过身份验证
{
Session["UserID"] = dr.GetValue(0);//将用户的ID存入Session["UserID"]中
Session["Role"] = dr.GetValue(4);//将该用户的权限存入Session["Role"]中
Response.Redirect("~/UserManagement.aspx");//跳转到主页
}
else
{
Response.Write("<script>alert('登录失败!请返回查找原因');location='Login.aspx'</script>");
}
dr.Close();
}
else
{
Response.Write("<script>alert('验证码输入错误!');location='Login.aspx'</script>");
}
}
}
Register.aspx页面
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Register.aspx.cs" Inherits="MyBlog.Register" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<style type="text/css">
.style1 { font-size: 13px; font-family: "黑体"; font-weight: normal; color: #0099FF; }
</style>
</head>
<body>
<form id="form1" runat="server">
<div>
<table align="center" style="width:500px; height:200px; text-align:center">
<tr style="text-align:center">
<td colspan="4"><span class="style1">用户注册</span></td>
</tr>
<tr>
<td style="width:100px"><span class="style1">账户</span></td>
<td style="width:200px">
<asp:TextBox ID="txtUserName" runat="server"></asp:TextBox>
</td>
<td>
<asp:RequiredFieldValidator ID="rfvUserName" runat="server" ControlToValidate="txtUserName" ErrorMessage="用户不能为空" ForeColor="Red"></asp:RequiredFieldValidator>
</td>
<td>
<asp:LinkButton ID="lbtnCheckName" runat="server" OnClick="lbtnCheckName_Click" Visible="False">检验账户是否存在</asp:LinkButton>
</td>
</tr>
<tr>
<td><span class="style1">密码</span></td>
<td >
<asp:TextBox ID="txtPassword" runat="server" TextMode="Password"></asp:TextBox>
</td>
<td>
<asp:RequiredFieldValidator ID="rfvPassword" runat="server" ControlToValidate="txtPassword" ErrorMessage="*" ForeColor="Red"></asp:RequiredFieldValidator>
</td>
<td>
</td>
</tr>
<tr>
<td><span class="style1">确认密码</span></td>
<td>
<asp:TextBox ID="txtConfirmPassword" runat="server" TextMode="Password"></asp:TextBox>
</td>
<td>
<asp:RequiredFieldValidator ID="rfvConfirmPassord" runat="server" ControlToValidate="txtConfirmPassword" ErrorMessage="确认密码不符" ForeColor="Red"></asp:RequiredFieldValidator>
</td>
<td>
</td>
</tr>
<tr>
<td><span class="style1">邮箱</span></td>
<td>
<asp:TextBox ID="txtEmail" runat="server"></asp:TextBox>
</td>
<td>
<asp:RegularExpressionValidator ID="revEamil" runat="server" ControlToValidate="txtEmail" ErrorMessage="邮箱格式不符" ForeColor="Red" ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"></asp:RegularExpressionValidator>
</td>
<td>
</td>
</tr>
<tr>
<td></td>
<td>
<asp:Button ID="btnRegister" runat="server" Text="注册" OnClick="btnRegister_Click" />
<asp:Button ID="btnReturn" runat="server" Text="返回" CausesValidation="False" PostBackUrl="~/Login.aspx" />
</td>
<td></td>
<td>
</td>
</tr>
</table>
</div>
</form>
</body>
</html>
Register.aspx.cs
public partial class Register : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
//在后台类里加入全局变量
int reValue;
//用于保存返回值。返回值为-1(用户已经存在),0(失败),1(成功),2(用户不存在)
protected void lbtnCheckName_Click(object sender, EventArgs e)
{
//查找用户名是否存在,已经存在返回-1,不存在返回2
reValue = CheckName();
if(reValue==-1)
{
Response.Write("<script>alert('用户名存在!');</script>");
txtUserName.Focus();
}
else if(reValue==2)
{
Response.Write("<script>alert('恭喜您!该用户名尚未注册!');</script>");
txtUserName.Focus();
}
}
//验证用户名是否存在
public int CheckName()
{
//实例化公共类对象
DB db = new DB();
string str = "select count(*) from User where UserName="+ txtUserName.Text+"";
try
{
DataTable dt = db.reDt(str);
if(dt.Rows[0][0].ToString()!="0")
{
return -1;//该用户已经存在
}
else
{
return 2;//该用户尚未注册
}
}
catch(Exception ee)
{
return 0;
}
}
//注册函数代码
protected void btnRegister_Click(object sender, EventArgs e)
{
reValue = CheckName();
if(reValue==-1)
{
Response.Write("<script>alert('用户名存在!');</script>");
}
else
{
//实例化公共类对象
DB db = new DB();
string UserName = txtUserName.Text;
string PassWord = db.MD5(txtPassword.Text.ToString());//MD5加密
string Email = txtEmail.Text;
string cmdstr="insert into [User](UserName,Password,Email,Role) values("+UserName+","+PassWord+","+Email+",'false')";
try
{
reValue=db.sqlEx(cmdstr);
if(reValue == 1)
{
Response.Write("<script>alert('注册成功!');</script>");
Clear();//清空文本框,后面加clear函数
}
else if(reValue == 0)
{
Response.Write("<script>alert('注册失败!');</script>");
}
}
catch(Exception ee)
{
Response.Write("<script>alert('注册失败!');</script>");
}
}
}
public void Clear()
{
txtUserName.Text = "";
txtPassword.Text = "";
txtConfirmPassword.Text = "";
txtEmail.Text = "";
}
}
ValidateNum.aspx.cs
public partial class ValidateNum : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
string validateNum = CreateRandomNum(4);//生成4位随机数
CreateImage(validateNum);//将生成的随机字符串绘成图片
Session["ValidateNum"] = validateNum;//保存验证码
}
}
//生成随机字符串
private string CreateRandomNum(int NumCount)
{
string allChar = "0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,W,X,Y,Z";
string[] allCharArray = allChar.Split(',');//拆分成数组
string randomNum = "";
int temp = -1;//记录上次随机数的数值,尽量避免产生几个相同的随机数
Random rand = new Random();
for (int i = 0; i < NumCount; i++)
{
if (temp != -1)
{
rand = new Random(i * temp * ((int)DateTime.Now.Ticks));
}
int t = rand.Next(35);
if (temp == t)
{
return CreateRandomNum(NumCount);
}
temp = t;
randomNum += allCharArray[t];
}
return randomNum;
}
//生成图片
private void CreateImage(string validateNum)
{
if (validateNum == null || validateNum.Trim() == String.Empty)
return;
//生成Bitmap图像
Bitmap image = new Bitmap(validateNum.Length * 12 + 10,22);
Graphics g = Graphics.FromImage(image);
try
{
//生成随机生成器
Random random = new Random();
//清空图片背景色
g.Clear(Color.White);
//话图片的背景噪音线
for(int i = 0; i < 25; i++)
{
int x1 = random.Next(image.Width);
int x2 = random.Next(image.Width);
int y1 = random.Next(image.Height);
int y2 = random.Next(image.Height);
g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2);
}
Font font = new Font("Arial", 12, FontStyle.Bold);
LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2f, true);
g.DrawString(validateNum, font, brush, 2, 2);
//画图片的前景噪音点
for (int i = 0; i < 100;i++ )
{
int x = random.Next(image.Width);
int y = random.Next(image.Height);
image.SetPixel(x, y, Color.FromArgb(random.Next()));
}
//画图片的边框
g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1);
MemoryStream ms = new MemoryStream();
//将图像保存到指定的流
image.Save(ms, ImageFormat.Gif);
Response.ClearContent();
Response.ContentType = "image/Gif";
Response.BinaryWrite(ms.ToArray());
}
finally
{
g.Dispose();
image.Dispose();
}
}
}