验证码实现的技术与方法

说明:验证码的应用可以在一定程度上防止恶意注册,它的原理就是在一个单独的页面上首先左一张图片,

然后在这个图片上添加数字,字母或者汉字

应用

第一步:在后台中生成背景图片

int  ImageWidth  =   85 ;                            
int  ImageHeight  =   33 ;                            
Font font 
=   new  Font( " Arial " 19 , FontStyle.Bold); // 定义字体                            
Brush brush = new  SolidBrush(Color.Black); // 定义工具                            
Bitmap bitmap =   new  Bitmap(ImageWidth,ImageHeight); // 定义画板                            
Graphics graphics  =  Graphics.FromImage(bitmap); // 在定义的画板上绘图                            
graphics.Clear(ColorTranslator.FromHtml( " #d9e8b7 " )); // 填充背景颜色                            
RectangleF rect  =   new  RectangleF( 5 , 2 ,ImageWidth,ImageHeight); // 定义个绘图形状                            
Pen pen1  =   new  Pen(Color.Blue); // 定义钢笔 绘制干扰线                            
Pen pen2  =   new  Pen(Color.DarkGreen); // 定义钢笔 绘制干扰线                            
Random rand  =   new  Random();                            
for  ( int  i  =   0 ;i < 2 ;i ++ ) // 绘制两条横向干扰线                            
{                            
    Point p1
= new  Point( 0 ,rand.Next(ImageWidth));                        
    Point p2
= new  Point(ImageWidth,rand.Next(ImageWidth));                        
    graphics.DrawLine(pen1,p1,p2);                        
}                            
for  ( int  i = 0 ;i < 2 ;i ++ ) // 绘制两条纵向干扰线                            
{                            
    Point p1 
=   new  Point( 0 ,rand.Next(ImageHeight));                        
    Point p2 
=   new  Point(ImageHeight,rand.Next(ImageHeight));                        
    graphics.DrawLine(pen2,p1,p2);                        
}                            
graphics.DrawString(CheckRandomCode(),font,brush,rect);
// 绘制验证码文字                            
bitmap.Save(Response.OutputStream,ImageFormat.Gif); // 保存为gif格式的图片                            
graphics.Dispose();                            
bitmap.Dispose();                            

 

第二步:在后台中生成字符库,随机取出4个

public   string  CheckRandomCode()                        
{                        
Random rom 
=   new  Random();                        
char [] allcheckRandom  = { ' 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  Randomcode  =   "" ;                        
for  ( int  i  =   0 ; i  <   4 ;i ++ )                        
{                        
Randomcode 
+= allcheckRandom[rom.Next(allcheckRandom.Length)];                        
Session[
" verty " =  Randomcode;                        
}                        
Session[
" CheckCode " =  Randomcode;                        
return  Randomcode;                          
}                        
第三步:在前台中显示(显示的其实是一个图片)
其中checkCode.aspx就是一个页面                
< IMG  id ="Img1"  src ="../login/checkCode.aspx" >                 

 

第四步:"换下一张"的功能实现(确切地说为局部刷新)

在JS中:其中Img1为ID                        
                        
onclick
= " Img1.src='../login/checkCode.aspx?'+Math.random() "                         
                        
在JQUERY中:                        
                        
 $(
" #Img1 " ).attr( " src " , " ../login/checkCode.aspx? " + Math.random());                        

 

 

转载于:https://www.cnblogs.com/wequst/archive/2010/02/02/1661614.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值