100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > ASP.NET 验证码示例

ASP.NET 验证码示例

时间:2022-02-22 16:15:36

相关推荐

ASP.NET 验证码示例

<%@PageLanguage="C#"%>

<%@ImportNamespace="System.Drawing"%>

<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<!--

1.准备Bitmap对象image:

System.Drawing.Bitmapimage=newSystem.Drawing.Bitmap(iwidth,20);

2.利用Graphics对象g在上面画图:

Graphicsg=Graphics.FromImage(image);

g.DrawString(checkCode,f,b,3,3);

3.然后Response.BinaryWrite输出:

Response.BinaryWrite(ms.ToArray());

优化想法:

将验证码以js脚本可读取的方式发送到客户端;

客户端先出发js脚本的验证,通过后才允许提交;

提供重新获取验证码功能。

-->

<scriptrunat="server">

///<summary>

///输入要求的验证码的位数,返回一个验证码字符串

///</summary>

///<paramname="codeCount">验证码的位数</param>

///<returns>验证码字符串</returns>

privatestringCreateRandomCode(intcodeCount)

{

stringallChar="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,"+

"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[]allCharArray=allChar.Split(',');

intallCharLen=allCharArray.Length;

stringrandomCode="";

Randomrand=newRandom();

for(inti=0;i<codeCount;i++)

{

randomCode+=allCharArray[rand.Next(0,allCharLen)];

}

returnrandomCode;

}

///<summary>

///根据验证码checkCode画图

///</summary>

///<paramname="checkCode"></param>

privatevoidCreateImage(stringcheckCode)

{

intiwidth=(int)(checkCode.Length*11.5);

System.Drawing.Bitmapimage=newSystem.Drawing.Bitmap(iwidth,20);

Graphicsg=Graphics.FromImage(image);

Fontf=newSystem.Drawing.Font("Arial",10,System.Drawing.FontStyle.Bold);

Brushb=newSystem.Drawing.SolidBrush(Color.White);

//g.FillRectangle(newSystem.Drawing.SolidBrush(Color.Blue),0,0,image.Width,image.Height);

g.Clear(Color.Blue);

g.DrawString(checkCode,f,b,3,3);

g.Dispose();

//PenblackPen=newPen(Color.Black,0);

//Randomrand=newRandom();

//for(inti=0;i<5;i++)

//{

//inty=rand.Next(image.Height);

//g.DrawLine(blackPen,0,y,image.Width,y);

//}

System.IO.MemoryStreamms=newSystem.IO.MemoryStream();

image.Save(ms,System.Drawing.Imaging.ImageFormat.Jpeg);

Response.ClearContent();

Response.ContentType="image/Jpeg";

Response.BinaryWrite(ms.ToArray());

image.Dispose();

//---------缓存验证码,以备验证---------

Session["ValidateCode"]=checkCode;

/*如果希望在挂接该aspx页的页面A.aspx内执行Session的绑定就是白扯!

*A页面首先绑定,然后是确定表达式,此时B.aspx未执行,还没有产生Session呢!

**/

}

protectedvoidPage_Load(objectsender,EventArgse)

{

CreateImage(CreateRandomCode(6));

}

</script>

<htmlxmlns="/1999/xhtml">

<headid="Head1"runat="server">

<title>无标题页</title>

</head>

<body>

</body>

</html>

调用上面的验证程序:

<%@PageLanguage="C#"%>

<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<scriptrunat="server">

protectedvoidbtnSend_Click(objectsender,EventArgse)

{

if(Session["ValidateCode"].ToString()!=txtValidateCode.Text)

Response.Write("验证码不正确");

else

Response.Write("登录到新的界面!");

}

</script>

<htmlxmlns="/1999/xhtml">

<headid="Head1"runat="server">

<title>无标题页</title>

</head>

<body>

<formid="form1"runat="server">

<div>

<asp:TextBoxID="txtValidateCode"runat="server"></asp:TextBox>

<imgsrc="ValidateCode.aspx"alt="验证码"/>

<br/>

<asp:ButtonID="btnSend"runat="server"OnClick="btnSend_Click"Text="发送"/></div>

</form>

</body>

</html>

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。
相关阅读
ASP.NET验证码

ASP.NET验证码

2022-08-02

ASP.NET验证码制作

ASP.NET验证码制作

2024-05-05

ASP.NET----验证码类

ASP.NET----验证码类

2023-12-18

ASP.net 生成验证码

ASP.net 生成验证码

2021-03-28