当前位置:首页 > 网络编程 > 软件语言 > .NET > vb.net验证码的实现

vb.net验证码的实现

点击次数:54 次 发布日期:2008-11-06 08:05:25 作者:源代码网
源代码网推荐
广告载入中
首先在VS.NET2005建立一个网站。 添加一个类,类文件名为:Class1.vb,其内容如下: Imports Microsoft.VisualBasic Imports System.Drawing Public Class CreateImage Public Shared Sub DrawImage() Dim img As New CreateImage() HttpContext.Current.Session("CheckCode") = img.RndNum(4) img.CreateImages(HttpContext.Current.Session("CheckCode").ToString()) End Sub "DrawImage "/ "/ 生成验证图片 "/ "/ 验证字符

Private Sub CreateImages(ByVal checkCode As String) Dim iwidth As Integer = CInt(checkCode.Length * 13) Dim image As New System.Drawing.Bitmap(iwidth, 23) Dim g As Graphics = Graphics.FromImage(image) g.Clear(Color.White) "定义颜色 Dim c As Color() = {Color.Black, Color.Red, Color.DarkBlue, Color.Green, Color.Orange, Color.Brown, Color.DarkCyan, Color.Purple} "定义字体 Dim font As String() = {"Verdana", "Microsoft Sans Serif", "Comic Sans MS", "Arial", "宋体"} Dim rand As New Random() "随机输出噪点 Dim i As Integer For i = 0 To 49 Dim x As Integer = rand.Next(image.Width) Dim y As Integer = rand.Next(image.Height) g.DrawRectangle(New Pen(Color.LightGray, 0), x, y, 1, 1) Next i "输出不同字体和颜色的验证码字符 For i = 0 To checkCode.Length - 1 Dim cindex As Integer = rand.Next(7) Dim findex As Integer = rand.Next(5) Dim f = New System.Drawing.Font(font(findex), 10, System.Drawing.FontStyle.Bold) Dim b = New System.Drawing.SolidBrush(c(cindex)) Dim ii As Integer = 4 If (i + 1) Mod 2 = 0 Then ii = 2 End If g.DrawString(checkCode.Substring(i, 1), f, b, 3 + i * 12, ii) Next i "画一个边框 g.DrawRectangle(New Pen(Color.Black, 0), 0, 0, image.Width - 1, image.Height - 1) "输出到浏览器 Dim ms As New System.IO.MemoryStream() image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg) HttpContext.Current.Response.ClearContent() "Response.ClearContent(); HttpContext.Current.Response.ContentType = "image/Jpeg" HttpContext.Current.Response.BinaryWrite(ms.ToArray()) g.Dispose() image.Dispose() End Sub "CreateImages "/ "/ 生成随机的字母 "/ "/ 生成字母的个数
"/ string Private Function RndNum(ByVal VcodeNum As Integer) As String Dim allChar As String = "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,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" Dim allCharArray() As String = allChar.Split(",") Dim randomCode As String = "" Dim temp As Integer = -1 "记录上次随机数值,尽量避免生产几个一样的随机数 Dim rand As Random = New Random Dim i As Integer = 0 Do While (i < VcodeNum) If (temp <> -1) Then Dim key As Integer = CType(DateTime.Now.Ticks Mod System.Int32.MaxValue, Integer) "用系统时间产生随机种子 rand = New Random(key) End If Dim t As Integer = rand.Next(allCharArray.Length) + 1 If t > allCharArray.Length - 1 Then t = allCharArray.Length - 1 End If If temp = t Then i -= 1 randomCode = Microsoft.VisualBasic.Left(randomCode, i) End If temp = t randomCode = randomCode + allCharArray(t) i += 1 Loop Return randomCode End Function "RndNum End Class "CreateImage 然后添加一个网页,文件名为:Default2.aspx,代码如下: <%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default2.aspx.vb" Inherits="Default2" %> 验证码生成
该网页后代码文件名为:Default2.aspx.vb,代码如下: Imports CreateImage Partial Class Default2 Inherits System.Web.UI.Page Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load CreateImage.DrawImage() End Sub End Class

源代码网推荐

源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华