科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件ASP.Net实现验证码

ASP.Net实现验证码

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

ASP.Net实现验证码

作者:ttg520 来源:赛迪网技术社区 2007年11月28日

关键字: 验证码 实现

  • 评论
  • 分享微博
  • 分享邮件
http://www.aspx51.com/Programme/200709/10638702424902.html U]-$q(+=e9  
using System.Drawing; C2/NTjc  
using System.Drawing.Imaging; :'"]UGO  
private void Page_Load(object sender, System.EventArgs e) xF{p|3  
{ Vb9s^bu  
// 在此处放置用户代码以初始化页面 fr5Xi ?3,O  
//RndNum是一个自定义函数 :M[F m\@  
string VNum=RndNum(4); //这里的数字4代表显示的是4位的验证字符串! M,{Iz;W  
Session["VNum"]=VNum; r pH7Wo3|  
ValidateCode(VNum); B yH!&b@  
} y^2fNz  
//生成图像函数 rI6 {[kV  
private void ValidateCode(string VNum) /Z:\$m/H  
{ nq^ \"HG/  
int Gheight=(int)(VNum.Length * 11.5); '!$WRSMN  
//gheight为图片宽度,根据字符长度自动更改图片宽度 WW CWe@ 1  
System.Drawing.Bitmap Img = new System.Drawing.Bitmap(Gheight,20); d/Gd6B.  
Graphics g = Graphics.FromImage(Img); K0xNicp  
g.DrawString(VNum,new System.Drawing.Font("Arial",10),new System.Drawing.SolidBrush(Color.Red),3,3); "0SG*sGC  
//在矩形内绘制字串(字串,字体,画笔颜色,左上x.左上y) k%d7H8\K  
System.IO.MemoryStream ms=new System.IO.MemoryStream(); ~~MRU#o  
Img.Save(ms,System.Drawing.Imaging.ImageFormat.Png); bi%pjDM  
Response.ClearContent(); //需要输出图象信息 要修改HTTP头 +<=>&IL{  
Response.ContentType="image/Png"; YHd>s z$  
Response.BinaryWrite(ms.ToArray()); ]: R$VsqD  
g.Dispose(); Q{Dk0p [  
Img.Dispose(); l5,}Q6!D  
Response.End(); ]},w\W"  
} \<o vsx  
9OAw#`|7y`  
//生成随机数函数中从Vchar数组中随机抽取 ML* leiY  
//字母区分大小写 &)N!t*  
public string RndNum(int VcodeNum) nq3q8  
{ ~x@t4_d#  
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,W,X,Y,Z" ; 9gQ4?Vd68  
%Hgk%)I  
string[] VcArray = Vchar.Split(',') ; k@2AGN]  
string VNum = "" ;//由于字符串很短,就不用StringBuilder了 iq5ZJqjAE  
int temp = -1 ;//记录上次随机数值,尽量避免生产几个一样的随机数 -5lG%fdi  
|8W? w O2  
//采用一个简单的算法以保证生成随机数的不同 z9d\ F=  
Random rand =new Random(); *^@ \  
for ( int i = 1 ; i < VcodeNum+1 ; i++ ) d3Nyn|F  
{ x3b>:Z} n  
if ( temp != -1) '2}xVCN \  
{ zgy&\K  
rand =new Random(i*temp*unchecked((int)DateTime.Now.Ticks)); s}i+,H/  
} Vm_?U@7E  
//int t = rand.Next(35) ; 8c3A@PCfea  
int t=rand.Next(35); KweQa_>0  
if (temp != -1 && temp == t) Uz&vU3u  
{ PE%9~CO  
return RndNum( VcodeNum ); K+Y3l  
} %2F c  
temp = t ; ^7\vu M[  
VNum += VcArray[t]; S@GFmk>Za@  
^R\a1>  
} DZh\rTT ra  
return VNum ; EL:\9    
} NwX 7N  
-----------------------------------end-------------------------------------------- aLx0s {  
7ze`^uMs(  
下面是Login.Aspx在在调用提交按钮的响应事件中 +] uks/2-  
{i@$I(@h#=  
private void Page_Load(object sender, System.EventArgs e) %0N4J 7}x  
{ _6po3i1IK  
if(!Page.IsPostBack ) jTy6N#>7 a  
{ i-h*3ob. /  
Session.Clear(); ea,A H#  
} :}]?P5\Xxv  
} g9%7PuNV  
qaa[g<|9H  
public void doit(object sender, System.EventArgs e) Q*,9 v+^|  
{ cjt*/}b7  
if(Page.IsValid) 0ZOae1v  
{ A~70|Fz  
5(Q;S-pfX  
string VNum; koS_- `P#  
VNum=Session["VNum"].ToString(); |69}!1^t  
ViewState["VNum"]=VNum; -G0cj;Va  
if(this.Vcode.Text==ViewState["VNum"].ToString()) nhXkHc  
{ BYW z$P   
)/`KI\  
Hover.Manage.CheckLogin obj=new Hover.Manage.CheckLogin(); ?_0r({=}m  
string name=username.Text; wCC6R`z  
string password=FormsAuthentication.HashPasswordForStoringInConfigFile(pass.Text.ToString(),"md5"); >!Osjz ~r  
if(!obj.checklogin(name,password)) -g|5=t BH  
{ `!,fN6/_  
Response.Redirect("../Error.aspx?action=Errorlogin"); [> Hz5k  
Response.End(); y&pE(:  
return; XHZPGkW4)  
} vHpZ $DOs  
else $7F KjJ  
{ KA!0,Wv?  
Session.Add("adminname",name); xVKX @LV  
Session.Add("adminpass",password); ,b0,[k  
Response.Redirect("Default.aspx"); \z^P;  
Response.End(); ANrcfJ5  
return; "ZQ&9IaK  
} \Qy%jfm:  
5bC },nxA  
} 4*<P[ \  
else 'PV;JsQ\h  
{ jup*4ZP `_  
Response.Write("<script>alert(\"请输入正确的附加码!\");</script>"); ctkSZt  
} 7M #!<  
} !hcv%aQTz  
} i/\8(T=Ff  
如果提交过来的验证字符串正确就验证是否是合法用户! y19>Ck|"i  
否则弹出提示返回登陆页!你也可以简化此页! z#3&#vL  
if(this.Vcode.Text==ViewState["VNum"].ToString()) lP}'8| |  
{ rb#Pp/Lp  
Response.Write("验证码正确"); )\[$S"f]  
} IM% "  
else $}3/<(N\G  
{ <EJ\U&te  
Response.Write("验证码错误!"); ,49!k&8  
} dOKb-Z 查看本文来源
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章