
正文
vb.net写验证码 vb验证码怎么编
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
vb.net 做出类似这样的验证码 白色字体,字形扭曲
这个是可以使用api来做的。图像处理之类的函数。
另外,还有一种方法是将所有的字符和数字做成不同的小图片进行拼接而成的一个字符串序列;
小图片要自己去做;效果就可以任意展现了。
相关问答
Q1: VB怎么弄验证码100分
我会C#.net的,不过逻辑应该一样,给你看下吧第一步: 创建生成随机字符的方法private string CreateValidate(int count)
{
//定义验证码中所有的字符
string allchar = "1,2,3,4,5,6,7,8,9,0,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";
//将验证码中所有的字符保存在一个字符串数组中
string[] allchararray = allchar.Split(',');
//初始化一个随机数
string randomcode = "";
int temp = -1;
//生成一个随机对象
Random rand = new Random();
//根据验证码的位数循环
for (int i = 0; i count; i++)
{
//主要是防止生成相同的验证码
if (temp != -1)
{
//加入时间的刻度
rand = new Random(i * temp * ((int)DateTime.Now.Ticks));
}
int t = rand.Next(35);
if (temp == t)
{
//相等的话重新生成
return CreateValidate(count);
}
temp = t;
randomcode += allchararray[t];
}
//在Session中保存随机验证码
Session["Valid"] = randomcode;
//返回生成的随机字符
return randomcode;
}第二步:创建生成图片的方法:private void CreateImageM(string validateCode)
{
//图像的宽度-与验证码的长度成一定比例
int iwidth = (int)(validateCode.Length * 11.5);
//创建一个长20,宽iwidth的图像对象
System.Drawing.Bitmap image = new System.Drawing.Bitmap(iwidth, 20);
//创建一个新绘图对象
Graphics g = Graphics.FromImage(image);
//绘图用的字体和字号
Font f = new System.Drawing.Font("Arial", 10, System.Drawing.FontStyle.Bold);
//绘图用的刷子大小
Brush b = new System.Drawing.SolidBrush(Color.White);
//清除背景色,并以深橄榄绿的颜色填充
g.Clear(Color.DarkOliveGreen);
//格式化刷子属性-用指定的刷子、颜色等在指定的范围内画图
g.DrawString(validateCode, f, b, 3, 3);
//创建铅笔对象
Pen blackPen = new Pen(Color.Black, 0);
//创建随机对象
Random rand = new Random();
//随机画线
for (int i = 0; i 5; i++)
{
int y = rand.Next(image.Height);
g.DrawLine(blackPen, 0, y, image.Width, y);
}
//输出绘图
System.IO.MemoryStream ms = new System.IO.MemoryStream();
//将图像保存到指定的流
image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
Response.ClearContent();
//配置输出类型
Response.ContentType = "image/Jpeg";
//输出内容
Response.BinaryWrite(ms.ToArray());
//清空不需要的资源
g.Dispose();
image.Dispose();
}第三步:在page_Load事件中调用CreateImageM(CreateValidate(4));第四步:判断服务器端的验证码是否与用户输入的相同protected void Button1_Click(object sender, EventArgs e)
{
//判断服务器端的验证码是否与用户输入的相同
if (TextBox1.Text == Session["Valid"].ToString())
{
//相同则提示欢迎信息
Response.Write("script language='javascript'alert('欢迎光临')/script");
}
else
{
//不相同则提示错误信息
Response.Write("script language='javascript'alert('对不起,验证码错误')/script");
}
}
Q2: asp.net vb怎样制作图片验证码
实现过程vb.net写验证码,在需要调用vb.net写验证码的页面使用image控件调用验证码生成vb.net写验证码的页面,验证码生成的页面生成验证图片且将验证信息保存至Session中,调用页面中通过Session判断用户是否输入正确。道理是这样,以下看代码vb.net写验证码:
生成验证码页面vb.net写验证码:
gif.ASPx
%@importnamespace="System"%
%@importnamespace="System.io"%
%@importnamespace="System.Drawing"%
%@importnamespace="System.Drawing.Imaging"%
scriptlanguage="VB"runat="server"
SubPage_Load(ByValSenderAsObject,ByValeAsEventArgs)
'RndNum为生成随机码的函数,
DimVNumAsString=RndNum(4)'该值为生成验证码的位数
Session("VNum")=VNum'读取Session
ValidateCode(VNum) '根据Session生成图片
EndSub
'--------------------------------------------
'生成图象验证码函数
SubValidateCode(ByValVNum)
DimImgAsSystem.Drawing.Bitmap
DimgAsGraphics
DimmsAsMemoryStream
DimgheightAsInteger=Int(Len(VNum)*14)
'gheight为图片宽度,根据字符长度自动更改图片宽度
Img=NewBitmap(gheight,24)
g=Graphics.FromImage(Img)
g.DrawString(VNum,(NewFont("Arial",12)),(NewSolidBrush(Color.Red)),3,3)'在矩形内绘制字串(字串,字体,画笔颜色,左上x.左上y)
ms=NewMemoryStream()
Img.Save(ms,ImageFormat.Png)
Response.ClearContent()'需要输出图象信息要修改HTTP头
Response.ContentType="image/Png"
Response.BinaryWrite(ms.ToArray())
g.Dispose()
Img.Dispose()
Response.End()
EndSub
'--------------------------------------------
'函数名称:RndNum
'函数参数:VCodeNum--设定返回随机字符串的位数
'函数功能:产生数字和字符混合的随机字符串
FunctionRndNum(ByValVcodeNum)
DimVcharAsString="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"'需要使用中文验证,可以修改这里和ValidateCode函数中的字体
DimVcArray()AsString=Split(Vchar,",")'将字符串生成数组
DimVNumAsString=""
DimiAsByte
Fori=1ToVcodeNum
Randomize()
VNum=VNumVcArray(Int(35*Rnd()))'数组一般从0开始读取,所以这里为35*Rnd
Next
ReturnVNum
EndFunction
/script
调用页面:
demo.ASPx
scriptlanguage="VB"Runat="Server"
SubPage_Load(Senderasobject,easeventargs)
dimVNumasstring=Session("VNum")
Session.Abandon()
ViewState("VNum")=VNum
EndSub
'下面的事件代码是用来测试验证码
SubbtnSubmit_click(senderasobject,easeventargs)
'判断输入的验证码与所给是否相同
IftxtValidateCode.Text=CStr(ViewState("VNum"))Then
ensonShow.text="fontcolor='red'提示:验证通过/font"
Else
ensonShow.text="所填写的验证码与所给的不符"
EndIf
EndSub
/script
html
body
formrunat="server"
divalign="center"
tablewidth="750"
tr
tdvalign="middle"验证码:/td
!--调用验证图片生成页---
tdvalign="top"asp:Imageid="Image1"runat="server"ImageUrl="gif.aspx"//td
/tr
tr
tdvalign="top"输入验证码:/td
tdvalign="top"asp:textboxID="txtValidateCode"runat="server"TextMode="SingleLine"/fontcolor="#FF0000"size="2"*区分大小写/font/td
/tr
tr
tdcolspan="2"valign="top"align="center"asp:buttonID="btnSubmit"runat="server"Text="验证"onclick="btnSubmit_click"/
asp:labelID="ensonShow"runat="server"/
/td
/tr
/table
/div
/form
/body
/html
Q3: VB NET 中怎样实现动态验证码
Imports System
Imports System.Data
Imports System.Configuration
Imports System.Collections
Imports System.Web
Imports System.Web.Security
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.WebParts
Imports System.Web.UI.HtmlControls
Imports System.Drawing
Partial Public Class VerifyCode
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
Session("VerifyCode") = MakeValidateCode()
CreateImage(Session("VerifyCode").ToString())
End Sub
Private Sub CreateImage(ByVal checkCode As String)
Dim iwidth As Integer = CInt(checkCode.Length * 12) + 10
Dim image As New System.Drawing.Bitmap(iwidth, 25)
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()
'随机输出噪点
For i As Integer = 0 To 4
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 As Integer = 0 To checkCode.Length - 1
Dim cindex As Integer = rand.Next(7)
Dim findex As Integer = rand.Next(5)
Dim f As Font = New System.Drawing.Font("宋体", 12, System.Drawing.FontStyle.Regular)
Dim b As Brush = 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)
Response.ClearContent()
Response.ContentType = "image/Jpeg"
Response.BinaryWrite(ms.ToArray())
g.Dispose()
image.Dispose()
End Sub
Private Function MakeValidateCode() As String
'0 i o
Dim s() As Char = { "0"c, "1"c, "2"c, "3"c, "4"c, "5"c, "6"c, "7"c, "8"c, "9"c, "A"c, "B"c, "C"c, "D"c, "E"c, "F"c, "G"c, "J"c, "K"c, "L"c, "M"c, "N"c, "P"c, "Q"c, "R"c, "S"c, "T"c, "U"c, "V"c, "W"c, "X"c, "Y"c, "Z"c }
Dim num As String = ""
Dim r As New Random()
For i As Integer = 0 To 3
num = s(r.Next(0, s.Length - 1)).ToString()
Next i
Return num
End Function
End Class
Q4: 求一个vb.net写的验证码?
建一个YanzhenCard.aspx文件
保留%@ Page Language="VB" AutoEventWireup="false" CodeFile="YanzhenCard.aspx.vb" Inherits="YanzhenCard" %,其余删除
如下是代码:
Imports System.IO
Imports System.Drawing
Partial Class YanzhenCard
Inherits System.Web.UI.Page
Private Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
Dim VNum As String = GenerateRandom(4)
Session("VNum") = VNum
ValidateCode(VNum)
End If
End Sub
Private Sub ValidateCode(ByVal VNum As String)
Dim Gheight As Integer = CType((VNum.Length * 15), Integer)
Dim Img As Bitmap = New Bitmap(Gheight, 20) 'Bitmap是用于处理由像素数据定义vb.net写验证码的图像
Dim g As Graphics = Graphics.FromImage(Img) 'Graphics.FromImage 从指定vb.net写验证码的Image创建新vb.net写验证码的Graphics
g.DrawString(VNum, New Font("Arial", 12), New SolidBrush(Color.Red), 5, 0) 'g.DrawString()在指定位置并且用指定vb.net写验证码的Brush和Font对象绘制指定vb.net写验证码的文本字符串。
Dim ms As MemoryStream = New MemoryStream '创建其支持存储区为内存的流。
Img.Save(ms, System.Drawing.Imaging.ImageFormat.Png)
Response.ClearContent()
Response.ContentType = "image/PNG"
Response.BinaryWrite(ms.ToArray)
Response.Write(VNum)
g.Dispose()
Img.Dispose()
Response.End()
End Sub
Private Shared constant As Char() = {"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"}
Public Shared Function GenerateRandom(ByVal Length As Integer) As String
Dim newRandom As System.Text.StringBuilder = New System.Text.StringBuilder(26)
Dim rd As Random = New Random
Dim i As Integer = 0
While i Length
newRandom.Append(constant(rd.Next(26)))
System.Math.Min(System.Threading.Interlocked.Increment(i), i - 1)
End While
Return newRandom.ToString
End Function
End Class
调用方法:asp:ImageButton ID="Yanzhengma_Card" runat="server" ImageUrl="YanzhenCard.aspx" Height="20px" Width="75px" BorderColor="#6699cc" BorderStyle="Solid" BorderWidth="1px" /
vb.net写验证码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于vb验证码怎么编、vb.net写验证码的信息别忘了在本站进行查找喔。







