说明:验证码的应用可以在一定程度上防止恶意注册,它的原理就是在一个单独的页面上首先左一张图片,
然后在这个图片上添加数字,字母或者汉字
应用
第一步:在后台中生成背景图片
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();
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;
}
{
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" >
< 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());
onclick = " Img1.src='../login/checkCode.aspx?'+Math.random() "
在JQUERY中:
$( " #Img1 " ).attr( " src " , " ../login/checkCode.aspx? " + Math.random());