asp.net登录时验证码的制作与验证

王朝学院·作者佚名  2016-08-28
窄屏简体版  字體: 小  |  中  |  大  |  超大  

1.新建一个页面,ImageCode.aspx

2.在Page_Load中添加如下代码

string tmp = RndNum(4);

HttpCookie a = new HttpCookie("ImageV ", tmp);

Response.Cookies.Add(a);

this.ValidateCode(tmp);

3.在该页面中添加两个方法

PRivate void ValidateCode(string VNum)

{

Bitmap Img = null;

Graphics g = null;

MemoryStream ms = null;

int gheight = VNum.Length * 12;

Img = new Bitmap(gheight, 25);

g = Graphics.FromImage(Img);

//生成随机生成器

Random random = new Random();

//背景颜色

g.Clear(Color.White);

for (int i = 0; i < 100; i++)

{

int x = random.Next(Img.Width);

int y = random.Next(Img.Height);

Img.SetPixel(x, y, Color.FromArgb(random.Next()));

}

//文字字体

Font f = new Font("Arial Black ", 12);

//文字颜色

SolidBrush s = new SolidBrush(Color.Blue);

g.DrawString(VNum, f, s, 3, 3);

ms = new MemoryStream();

Img.Save(ms, ImageFormat.Jpeg);

Response.ClearContent();

Response.ContentType = "image/Jpeg ";

Response.BinaryWrite(ms.ToArray());

g.Dispose();

Img.Dispose();

Response.End();

}

private string RndNum(int VcodeNum)

{

string Vchar = "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,V,W,X,Y,Z";

string[] VcArray = Vchar.Split(new Char[] { ',' });

string VNum = " ";

int temp = -1;

Random rand = new Random();

for (int i = 1; i < VcodeNum + 1; i++)

{

if (temp != -1)

{

rand = new Random(i * temp * unchecked((int)DateTime.Now.Ticks));

}

int t = rand.Next(35);

if (temp != -1 && temp == t)

{

return RndNum(VcodeNum);

}

temp = t;

VNum += VcArray[t];

}

return VNum;

}

4.在需要显示验证码的页面添加一个图片控件

5.在该页的前台页面添加如下代码:

验证码:

<asp:TextBox ID="tbx_yzm" runat="server" Width="70px"></asp:TextBox>

<asp:ImageButton ID="ibtn_yzm" runat="server" />

<a href="javascript:changeCode()"style="text-decoration: underline; font-size:10px;">换一张</a>

<script type="text/Javascript">

function changeCode()

{

[flash=500,400]http://www.knowsky.com/document.getElementById([/flash]document.getElementById('ibtn_yzm').src = document.getElementById('ibtn_yzm').src + '?';

}

</script>

6.在该页的Page_Load事件中添加如下代码:

ibtn_yzm.ImageUrl = "ImageCode.aspx";

7.验证该验证码是否输入正确的代码:

string code = tbx_yzm.Text;

HttpCookie htco = Request.Cookies["ImageV"];

string scode = htco.Value.ToString();

if (code != scode)

{

Response.Write("<script>alert('验证码输入不正确!')</script>");

}

8.效果

[flash=500,400]http://s1.knowsky.com/20160211/cjfmvo2rs0c18.jpg[/flash]

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航