简单的登录、注册以及带有验证码功能

来源:互联网 发布:电脑打字用什么软件 编辑:程序博客网 时间:2024/06/05 10:52

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" />
                   &nbsp;
                   <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(); 
            }             
        }
    }


原创粉丝点击