您的位置:首页 > 编程语言 > ASP

ASP.NET 实现登录界面(生成验证码)

2011-08-07 22:46 771 查看
这周末也没干啥,真正开始ASP,做了个学籍管理系统的登录界面,登录界面主要包括用户名、密码、验证码,界面字体用了改变字体,生成验证码控件 ImageButton (例如:) 还学会了图片按钮 HyperLink (例如: )其中我觉得很难的就是验证码的生成,你首先在站点中添加pivture.aspx 的窗体,打开代码页面(即pivture.aspx.cs)并录入下面代码(完整的) Code using System; using System.Collections; using System.Configuration; using System.Data; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; using System.Drawing; using System.IO; public partial class Picture : System.Web.UI.Page { Random ran = new Random(); protected void Page_Load(object sender, EventArgs e) { string str = getRandomValidate(4); Session["CheckCode"] = str;//这一部是Wie了验证码写入Session,进行验证,也可以使用cookie getImageValidate(str); } //得到随机字符串,长度自定义 private string getRandomValidate(int len) { int num; int tem; string rtuStr=""; for (int i = 0; i < len;i++ ) { num = ran.Next(); tem = num % 10 + '0';//生成数字 //tem = num % 26 + 'A';//生成字符 rtuStr += Convert.ToChar(tem).ToString(); } return rtuStr; } //生成图像 private void getImageValidate(string strValue) { //string str=oo00;前两个为字母o,后两个数为0 int width = Convert.ToInt32(strValue.Length*12); Bitmap img = new Bitmap(width,23); Graphics gfc = Graphics.FromImage(img); gfc.Clear(Color.White); drawLine(gfc,img); //写验证码,要定义Font Font font = new Font("arial",12,FontStyle.Bold); //Font font = new Font("宋体",12,FontStyle.Bold|FontStyle.Italic); System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0,0,img.Width,img.Height),Color.DarkOrchid,Color.Blue,1.5f,true); gfc.DrawString(strValue,font, brush ,3,2); drawPoint(img); gfc.DrawRectangle(new Pen(Color.DarkBlue),0,0,img.Width-1,img.Height-1); //将图像添加到页面 MemoryStream ms = new MemoryStream(); img.Save(ms,System.Drawing.Imaging.ImageFormat.Gif); //更改HTTP Response.ClearContent(); Response.ContentType = "image/gif"; Response.BinaryWrite(ms.ToArray()); //Dispose gfc.Dispose(); img.Dispose(); Response.End(); } private void drawLine(Graphics gfc,Bitmap img) { //选择画10条线,也可以增加,也可以不要线,只要随机杂点就行 for (int i = 0; i < 10;i++ ) { int x1 = ran.Next(img.Width); int y1 = ran.Next(img.Height); int x2 = ran.Next(img.Width); int y2 = ran.Next(img.Height); gfc.DrawLine(new Pen(Color.Silver),x1,y1,x2,y2);//注意画笔要淡,不然看不清 } } //private void drawPoint(Bitmap img) //{ //} private void drawPoint(Bitmap img) { int col = ran.Next();//在一次的图片中杂点颜色相同 for (int i = 0; i < 100; i++) { int x = ran.Next(img.Width); int y = ran.Next(img.Height); img.SetPixel(x,y,Color.FromArgb(col)); } } } 录完后,需要在 登录界面显示验证码,则需要在登录界面的代码文件 Page_Load 中加入 ImageButton1.ImageUrl = "~/Picture.aspx"; 其登陆页面的代码Default.aspx.cs中的代码为 Code using System; using System.Configuration; using System.Data; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { ImageButton1.ImageUrl = "~/Picture.aspx"; if (Session["CheckCode"] == null) Information.Text = "对不起,验证码生成错误!"; } protected void OK_Click(object sender, EventArgs e) { if (UserName.Text.Length == 0) Information.Text = "请输入用户名!"; else { if(Password.Text.Length ==0) Information.Text = "请输入密码!"; else if (CheckCode.Text.ToString() != Session["CheckCode"].ToString()) { Information.Text = "对不起,验证码不正确,请重新输入!"; } else if (UserName.Text == "Admin" && Password.Text == "Admin" && CheckCode.Text.ToString() == Session["CheckCode"].ToString()) { Information.Text = "用户:" + UserName.Text + "登录成功!"; Response.Redirect("~/Default2.aspx"); } else Information.Text = "用户不存在或密码不正确!"; } } protected void Cancel_Click(object sender, EventArgs e) { Information.Text = "已退出登录!" ; } }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: