//首先创建一个页面ValidateCodePage:
//创建Random的实例
Random rand=new Random();
protected void Page_Load(object sender,EventArgs e){
//调用该方法实现的事数字和字符独立的效果
//string str=getRandomValidate(4);
//调用该方法实现的事验证码中数字和字母的组合
string str=CreateRandomCode(4);
Session["CheckCode"]=str;
GetImageValidate(str);
}
private string getRandomValidate(int len){
int num;
int temp;
string rtnStr="";
for(int i=0;i<len;i++){
num=rand.Next();
//生成数字验证码
temp=num%10+'0';
//生成字符验证码
//temp=num%26+'A';
rtnStr+=Convert.ToChar(temp).ToString();
}
return rtnStr;
}
//验证码是数字和字母的组合
private string CreateRandomCode(int codeCount){
string allChar="0,1,2,3,4,5,6,7,8,9,Q,W,E,R,T,Y,U,I,O,P,A,S,D,F,G,H,J,K,L,Z,X,C,V,B,N,M";
string [] allCharArray=allChar.Split(',');
string randomCode="";
int temp=-1;
Random rand=new Random();
for(int i=0;i<codeCount;i++){
if(temp!=-1){
rand=new Random(i*temp*((int) DateTime.Now.Ticks));
}
int t=rand.Next(35); //总共35个数,下标从0开始
if(temp==t){
return CreateRandomCode(codeCount);
}
temp=t;
randomCode+=allCharArray[t];
}
return randomCode;
}
//生成图像
private void getImageValidate(string strValue){
int width=Convert.ToInt32(strValue.Length*14);
BitMap image=new BitMap(width,21);
Graphics g=Graphics.FromImage(image);
g.Clear(Colot,White);
drawLine(g,image);
//写验证码,定义字体的样式
Font font =new Font("Arial",12,FontStyle.Bold);
Ststem.Drawing.Drawing2D.LinearGradientBrush brush=new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0,0,image.Width-1,image.Hiight-1));
//将图像添加到页面
MemoryStream ms=new MemoryStream();
image.Save(ms,System.Drawing,Imaging.ImageFormat.Gif);
//更改http头
Response.ClearContent();
Response.ContentType="image/gif";
Response.BinaryWrite(ms.ToArray());
g.dispose();
image.dispose();
Response.End();
}
private void drawPoint(BitMap image){
for(int i-0;i<10;i++){
int x=rand.Next(image.Width);
int y=rand.Next(image.Height);
image.SetPixel(x,y,Color.FromArgb(rand.Next())); //描绘随机杂点
}
//杂点颜色相同
int color=rand.Next();
for(int i=0;i<20;i++){
int x=rand.Next(image.Width);
int y=rand.Next(image.Height);
image.SetPixel(x,y,Color.FromArgb(colot));
}
}
//画线
private void drawLine(Graphics g,Bitmap image){
for(int i=0;i<10;i++){
int x1=rand.Next(image.Width);
int y1=rand.Next(image.Height);
int x2=rand.Next(image.Width);
int y2=rand.Next(image.Height);
g.DrawLine(new Pen(Color.Silver),x1,y1,x2,y2);
}
}
//在需要使用该验证码的地方编写如下代码
<img id="imgCode" src="此处是我们编写验证码的页面路径">
<a><href="javascript:change();">看不清,换一张</a>
想要改变框中的验证码还需要些一个js方法,方法如下所示:
function change(){
var image=document.getElementById("imgCode");
image.src="../Image/Validate.aspx?"+Math.random();
}
分享到:
相关推荐
用dll组件直接调用则可自动生成随机验证码
asp.net 生成随机验证码 图片验证 水印字母
用asp.net生成随机验证码.................................
用ASP.NET生成随机验证码(源码+注释)
随机验证码的生成,asp.net的ashx一般处理程序
用C#和ASP.Net编写的可以生成网页上的随机验证码的程序模块
验证码 源码 asp.net 随机 生成验证码 源码 asp.net 随机 生成
用asp.net生成随机验证码(全源码,附注释)
Asp.Net生成干扰验证码 可以设置生成长度、干扰线等。
使用ASP.NET,生成随机图片验证码!
用asp.net生成随机验证码(全源码,附注释)内存说明文件。
用asp.net生成随机验证码(全源码,附注释).rar
随机生成设定验证码,并随机旋转一定角度,字体颜色不同
很实用的生成汉字验证码的程序,并且生成验证码图片,以及验证功能,就如同QQ注册的验证码,生成汉字或数字字母自己选择
在asp.net环境下生成验证码。 能随机生成4个区分大小写的字母、随机躁点、随机字母间距、随机字母顶距、随机文字行水平偏转角度等。 你也可以在源码的基础上进行修正、添加得到更强大的功能
生成随机验证码的解决方案(源代码)。 如果要实际应用,可以在这个基础上,加以修改即可。
ASP.net数字验证码生成,并且判断验证码输入是否正确的例子,ASP.NET生成基于数字和随机数的验证码例子,学习下如何在ASP.NET中调用和生成数字图形的验证码。如示例所示,在一个登录页上使用本代码生成的数字验证码...
本文实例讲述了ASP.NET生成图形验证码的方法。分享给大家供大家参考,具体如下: 通常生成一个图形验证码主要 有3个步骤: (1)随机产生一个长度为N的随机字符串,N的值可由开发可由开发人员自行设置。该字符串可以...
现在很多网站都有注册登录的页面,为了更好的满足用户...本实例实现的是数字验证码技术,即随机生成4位数字作为验证码。在开发绘制会员登录验证模块时可以使用数字验证码技术。 ■设计过程 在一个新建的窗体CheckCode.a
在asp.net环境下实现验证码生成的效果。 能自动生成4位字母,并区分大小写、绘制随机躁点、随机字母间距、随机字母高度、随机文字行小角度偏转等。 你可以自由修改源码以实现更多效果。