网站上登录时生成随机的验证字符串!!
2004-10-12 21:42
405 查看
两个.aspx文件,一个用来生成图片,另一个用来验证的。
生成图片代码文件
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;
namespace CSharpALL
{
/// <summary>
/// WebForm4 的摘要描述。
/// </summary>
public class WebForm4 : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
// 在這裡放置使用者程式碼以初始化網頁
//RndNum是一个自定义函数
string VNum=RndNum(6); //这里的数字6代表的是6位的随机字符串!
Session["VNum"]=VNum;
ValidateCode(VNum);
}
private void ValidateCode(string VNum)
{
int Gheight=(int)(VNum.Length * 11.5);
//gheightl圖片寬度,根据字符長度自動更改圖片寬度
System.Drawing.Bitmap Img = new System.Drawing.Bitmap(Gheight,20);
Graphics g = Graphics.FromImage(Img);
g.DrawString(VNum,new System.Drawing.Font("Arial",10),new System.Drawing.SolidBrush(Color.Red),3,3);
//在矩形控制字串(字串,字体,字休颜色,左上x.左上y)
System.IO.MemoryStream ms=new System.IO.MemoryStream();
Img.Save(ms,System.Drawing.Imaging.ImageFormat.Png);
Response.ClearContent(); //需要输出图象信息 要修改HTTP头
Response.ContentType="image/Png";
Response.BinaryWrite(ms.ToArray());
g.Dispose();
Img.Dispose();
Response.End();
}
public string RndNum(int VcodeNum)
{
string Vchar = "0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,T,U,W,X,Y" ;
string[] VcArray = Vchar.Split(',') ;
string VNum = "" ;//由于字符串很短,就不用StringBuilder了
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) ;
int t=rand.Next(35);
if (temp != -1 && temp == t)
{
return RndNum( VcodeNum );
}
temp = t ;
VNum += VcArray[t];
}
return VNum ;
}
#region Web Form 設計工具產生的程式碼
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 此為 ASP.NET Web Form 設計工具所需的呼叫。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 此為設計工具支援所必須的方法 - 請勿使用程式碼編輯器修改
/// 這個方法的內容。
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}
}
验证密码文件
<asp: image id=image1 ruant=server imageurl="你的生成图片的文件名" ></asp:image>
private void Button1_Click(object sender, System.EventArgs e)
{
string VNum;
VNum=Session["VNum"].ToString();
if(this.txtVc.Text!=VNum)
{
Response.Write("<script>alert(/"驗證碼不正確/");</script>");
}
}
生成图片代码文件
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;
namespace CSharpALL
{
/// <summary>
/// WebForm4 的摘要描述。
/// </summary>
public class WebForm4 : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
// 在這裡放置使用者程式碼以初始化網頁
//RndNum是一个自定义函数
string VNum=RndNum(6); //这里的数字6代表的是6位的随机字符串!
Session["VNum"]=VNum;
ValidateCode(VNum);
}
private void ValidateCode(string VNum)
{
int Gheight=(int)(VNum.Length * 11.5);
//gheightl圖片寬度,根据字符長度自動更改圖片寬度
System.Drawing.Bitmap Img = new System.Drawing.Bitmap(Gheight,20);
Graphics g = Graphics.FromImage(Img);
g.DrawString(VNum,new System.Drawing.Font("Arial",10),new System.Drawing.SolidBrush(Color.Red),3,3);
//在矩形控制字串(字串,字体,字休颜色,左上x.左上y)
System.IO.MemoryStream ms=new System.IO.MemoryStream();
Img.Save(ms,System.Drawing.Imaging.ImageFormat.Png);
Response.ClearContent(); //需要输出图象信息 要修改HTTP头
Response.ContentType="image/Png";
Response.BinaryWrite(ms.ToArray());
g.Dispose();
Img.Dispose();
Response.End();
}
public string RndNum(int VcodeNum)
{
string Vchar = "0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,T,U,W,X,Y" ;
string[] VcArray = Vchar.Split(',') ;
string VNum = "" ;//由于字符串很短,就不用StringBuilder了
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) ;
int t=rand.Next(35);
if (temp != -1 && temp == t)
{
return RndNum( VcodeNum );
}
temp = t ;
VNum += VcArray[t];
}
return VNum ;
}
#region Web Form 設計工具產生的程式碼
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 此為 ASP.NET Web Form 設計工具所需的呼叫。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 此為設計工具支援所必須的方法 - 請勿使用程式碼編輯器修改
/// 這個方法的內容。
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}
}
验证密码文件
<asp: image id=image1 ruant=server imageurl="你的生成图片的文件名" ></asp:image>
private void Button1_Click(object sender, System.EventArgs e)
{
string VNum;
VNum=Session["VNum"].ToString();
if(this.txtVc.Text!=VNum)
{
Response.Write("<script>alert(/"驗證碼不正確/");</script>");
}
}
相关文章推荐
- 从指定字符串中随机生成指定长度子字符串
- ruby 生成随机字符串
- 生成一个任意长度的随机字符串,包含数字和字母[C语言]
- Python格式化字符串和随机生成ip地址
- python随机生成字符串学习
- 如何使用VBA生成随机字符串
- C#随机生成字符串
- 生成随机字符串的工具类
- MySQL中随机生成固定长度字符串的方法
- Java回炉重造(五)使用Apache Commons Text生成随机字符串
- [代码示例]如何在ASP.NET中获取随机生成的cookie加密与验证密钥
- SQL存储过程生成一个指定长度的随机字符串
- C# 生成不重复随机字符串 (1秒内生成1000000个)
- Java——随机生成一个字符串
- js 生成四位随机字符串
- 生成随机字符串
- [C#]生成一串包含字符和数字的随机字符串的方法
- 如何随机生成01随机字符串
- java随机数生成1到10 java怎么随机生成一个字符串?
- 随机生成字符串