验证码

来源:互联网 发布:网络可视化 编辑:程序博客网 时间:2024/04/29 09:15

我也是初学不大会 这是别人给我的
验证码程序  image.aspx.cs
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Drawing.Imaging;
using System.IO;

namespace wsbm2005
{
/// <summary>
/// image 的摘要说明。
/// </summary>
public class image : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
{
//生成4位的驗證碼
string tmp = RndNum(4);
Session["CheckCode"] = tmp;
this.ValidateCode(tmp);
}
}

private string RndNum(int VcodeNum)
{
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,v,w,x,y,z";
string[] VcArray=Vchar.Split(new Char [] {','});
string VNum="";
int temp=-1;

Random rand=new Random();
  
for(int i=1;i<VcodeNum+1;i++)
{
if(temp!=-1)
{
rand=new Random(i*temp*unchecked((int)DateTime.Now.Ticks));
}
  
int t=rand.Next(35);
if(temp!=-1&&temp==t)
{
return RndNum(VcodeNum);
}
temp=t;
VNum+=VcArray[t];
}
return VNum;
}

private void ValidateCode(string VNum)
{
Bitmap Img=null;
Graphics g=null;
MemoryStream ms=null;

int gheight=VNum.Length*12;
Img=new Bitmap(gheight,25);
g=Graphics.FromImage(Img);
//背景顏色
g.Clear(Color.White);
//文字字體
Font f=new Font("Arial", 12, System.Drawing.FontStyle.Bold);

//文字顏色
SolidBrush s=new SolidBrush(Color.Black);
g.DrawString(VNum,f,s,3,3);
ms=new MemoryStream();
Img.Save(ms,ImageFormat.Jpeg);
Response.ClearContent();
Response.ContentType="image/Jpeg";
Response.BinaryWrite(ms.ToArray());
  
g.Dispose();
Img.Dispose();
Response.End();
}


#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{   
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}
}


我在login.aspx里用的代码

<asp:TextBox id="txtyzm" runat="server" Width="112px"></asp:TextBox>(输入验证码的文本框)

<asp:Image ID="yzm" runat="server" ImageUrl="image.aspx"></asp:Image>

在login.aspx.cs里的代码

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Xml;//开始我没加这句没好使,后来加上了好使了,但一直没知道为什么
.
.
.
protected System.Web.UI.WebControls.Image yzm;
protected System.Web.UI.WebControls.TextBox txtyzm;
.
.
.

if (Session["CheckCode"].ToString()!=txtyzm.Text.Trim())
{
msg1.Text="验证码错误! ";
}
else
{  }


                              
希望能对你有所帮助!:)