- 浏览: 50436 次
- 性别:
- 来自: 西安
最近访客 更多访客>>
最新评论
-
black.angel:
你用的FCK是什么版本的?
EXT中嵌入FCK Editor -
tmartin:
学习了 好东西
EXTJS如何通过JSON与服务器通信
我们在设计用户登录模块时,经常会用到验证码,可以有效地防止黑客软件的恶意破解,现公开我常用的验证码的源代码,生成效果如图:。
/**////<summary>
///验证码模块
///</summary>
publicclassCreateImage
...{
publicstaticvoidDrawImage()
...{
CreateImageimg=newCreateImage();
HttpContext.Current.Session["CheckCode"]=img.RndNum(4);
img.CreateImages(HttpContext.Current.Session["CheckCode"].ToString());
}
/**////<summary>
///生成验证图片
///</summary>
///<paramname="checkCode">验证字符</param>
privatevoidCreateImages(stringcheckCode)
...{
intiwidth=(int)(checkCode.Length*13);
System.Drawing.Bitmapimage=newSystem.Drawing.Bitmap(iwidth,23);
Graphicsg=Graphics.FromImage(image);
g.Clear(Color.White);
//定义颜色
Color[]c=...{Color.Black,Color.Red,Color.DarkBlue,Color.Green,Color.Orange,Color.Brown,Color.DarkCyan,Color.Purple};
//定义字体
string[]font=...{"Verdana","MicrosoftSansSerif","ComicSansMS","Arial","宋体"};
Randomrand=newRandom();
//随机输出噪点
for(inti=0;i<50;i++)
...{
intx=rand.Next(image.Width);
inty=rand.Next(image.Height);
g.DrawRectangle(newPen(Color.LightGray,0),x,y,1,1);
}
//输出不同字体和颜色的验证码字符
for(inti=0;i<checkCode.Length;i++)
...{
intcindex=rand.Next(7);
intfindex=rand.Next(5);
Fontf=newSystem.Drawing.Font(font[findex],10,System.Drawing.FontStyle.Bold);
Brushb=newSystem.Drawing.SolidBrush(c[cindex]);
intii=4;
if((i+1)%2==0)
...{
ii=2;
}
g.DrawString(checkCode.Substring(i,1),f,b,3+(i*12),ii);
}
//画一个边框
g.DrawRectangle(newPen(Color.Black,0),0,0,image.Width-1,image.Height-1);
//输出到浏览器
System.IO.MemoryStreamms=newSystem.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();
}
/**////<summary>
///生成随机的字母
///</summary>
///<paramname="VcodeNum">生成字母的个数</param>
///<returns>string</returns>
privatestringRndNum(intVcodeNum)
...{
stringVchar="0,1,2,3,4,5,6,7,8,9";
string[]VcArray=Vchar.Split(',');
stringVNum="";//由于字符串很短,就不用StringBuilder了
inttemp=-1;//记录上次随机数值,尽量避免生产几个一样的随机数
//采用一个简单的算法以保证生成随机数的不同
Randomrand=newRandom();
for(inti=1;i<VcodeNum+1;i++)
...{
if(temp!=-1)
...{
rand=newRandom(i*temp*unchecked((int)DateTime.Now.Ticks));
}
intt=rand.Next(VcArray.Length);
if(temp!=-1&&temp==t)
...{
returnRndNum(VcodeNum);
}
temp=t;
VNum+=VcArray[t];
}
returnVNum;
}
}
///验证码模块
///</summary>
publicclassCreateImage
...{
publicstaticvoidDrawImage()
...{
CreateImageimg=newCreateImage();
HttpContext.Current.Session["CheckCode"]=img.RndNum(4);
img.CreateImages(HttpContext.Current.Session["CheckCode"].ToString());
}
/**////<summary>
///生成验证图片
///</summary>
///<paramname="checkCode">验证字符</param>
privatevoidCreateImages(stringcheckCode)
...{
intiwidth=(int)(checkCode.Length*13);
System.Drawing.Bitmapimage=newSystem.Drawing.Bitmap(iwidth,23);
Graphicsg=Graphics.FromImage(image);
g.Clear(Color.White);
//定义颜色
Color[]c=...{Color.Black,Color.Red,Color.DarkBlue,Color.Green,Color.Orange,Color.Brown,Color.DarkCyan,Color.Purple};
//定义字体
string[]font=...{"Verdana","MicrosoftSansSerif","ComicSansMS","Arial","宋体"};
Randomrand=newRandom();
//随机输出噪点
for(inti=0;i<50;i++)
...{
intx=rand.Next(image.Width);
inty=rand.Next(image.Height);
g.DrawRectangle(newPen(Color.LightGray,0),x,y,1,1);
}
//输出不同字体和颜色的验证码字符
for(inti=0;i<checkCode.Length;i++)
...{
intcindex=rand.Next(7);
intfindex=rand.Next(5);
Fontf=newSystem.Drawing.Font(font[findex],10,System.Drawing.FontStyle.Bold);
Brushb=newSystem.Drawing.SolidBrush(c[cindex]);
intii=4;
if((i+1)%2==0)
...{
ii=2;
}
g.DrawString(checkCode.Substring(i,1),f,b,3+(i*12),ii);
}
//画一个边框
g.DrawRectangle(newPen(Color.Black,0),0,0,image.Width-1,image.Height-1);
//输出到浏览器
System.IO.MemoryStreamms=newSystem.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();
}
/**////<summary>
///生成随机的字母
///</summary>
///<paramname="VcodeNum">生成字母的个数</param>
///<returns>string</returns>
privatestringRndNum(intVcodeNum)
...{
stringVchar="0,1,2,3,4,5,6,7,8,9";
string[]VcArray=Vchar.Split(',');
stringVNum="";//由于字符串很短,就不用StringBuilder了
inttemp=-1;//记录上次随机数值,尽量避免生产几个一样的随机数
//采用一个简单的算法以保证生成随机数的不同
Randomrand=newRandom();
for(inti=1;i<VcodeNum+1;i++)
...{
if(temp!=-1)
...{
rand=newRandom(i*temp*unchecked((int)DateTime.Now.Ticks));
}
intt=rand.Next(VcArray.Length);
if(temp!=-1&&temp==t)
...{
returnRndNum(VcodeNum);
}
temp=t;
VNum+=VcArray[t];
}
returnVNum;
}
}
使用方法:
1、在Web项目中添加一个类,如“CreateImage.cs”,然后将我公布的源代码Copy进去;
2、再新建一个Web窗体,如“Image.aspx”,在Page_Load中加入代码 “CreateImage.DrawImage ();”当然别忘了加上对类的引用哦!!
3、在页面的合适位置上(你想放验证码的位置)上加上如下javascript代码就OK 了,
<SCRIPT LANGUAGE="JavaScript">
<!--
var numkey = Math.random();
numkey = Math.round(numkey*10000);
document.write("<img src=\"Image.aspx?k="+ numkey +"\" width=\"52\" height=\"23\" hspace=\"4\"");
//-->
</SCRIPT>
源代码如下:
1、在Web项目中添加一个类,如“CreateImage.cs”,然后将我公布的源代码Copy进去;
2、再新建一个Web窗体,如“Image.aspx”,在Page_Load中加入代码 “CreateImage.DrawImage ();”当然别忘了加上对类的引用哦!!
3、在页面的合适位置上(你想放验证码的位置)上加上如下javascript代码就OK 了,
<SCRIPT LANGUAGE="JavaScript">
<!--
var numkey = Math.random();
numkey = Math.round(numkey*10000);
document.write("<img src=\"Image.aspx?k="+ numkey +"\" width=\"52\" height=\"23\" hspace=\"4\"");
//-->
</SCRIPT>
源代码如下:
发表评论
-
关于建立asp.net WEB应用程序时,提示IIS运行的不是asp.net 1.1版的解决办法
2006-07-24 21:49 648关于建立asp.net WEB应用程序时,提示IIS运行的不是 ... -
Asp.Net 学习资源列表
2006-11-16 17:25 593名称:快速入门地址:http://chs.gotdotnet. ... -
给ASP.Net表单增加验证码
2006-11-24 22:09 786给ASP.Net表单增加验证码 一、验证码 对于一个预 ... -
C# 里XML文件读写
2006-11-24 22:14 652已知有一个XML文件(bookstore.xml)如下:< ... -
asp.net页面间数据传递
2007-09-23 00:47 5531. Get(即使用QueryString显 ... -
一些常见的ASP.NET验证码
2007-09-23 11:17 1635一些常见的验证码效果图: ... -
C#中获取程序当前路径的集中方法
2007-10-11 18:55 533stringstr1=Process.GetCurrent ... -
SQL Server 中图片和文件的存取(C#.NET)
2007-10-13 19:30 1175读取文件夹,将文件直接保存到数据库中前台文件 <!--& ... -
.NET中的lock
2007-10-13 19:43 1109lock 关键字可将语句块标记为临界区,方法是获取给定对象 ... -
创建ADOKeycap数据库对象
2007-10-13 19:46 583为什么要创建数据库对象?ADOKeycap 必须创建Datab ... -
ASP.net app_Code dll 类中获得当前路径的方法(非页面中)
2007-10-13 20:44 1702在ASP.NET 页面中获得当前路径的方法很多,比如 MapP ... -
ADOKeycap 比 Socut.data.dll 优越在哪?
2007-10-13 20:45 751最近有很多原Socut.data.dl ... -
使用ADOKeycap统计数据
2007-10-13 20:47 547请注意引用: usingSystem.Data.Commo ... -
认识 yueue.ADOKeycap 开源数据库组件
2007-10-13 20:49 715ADOKeycap 是什么?ADOKeycap ... -
yueue.ADOKeycap 开源数据库组件 1.02 下载+反馈 页面
2007-10-13 20:50 7181.02 版本主要改进如下:1.加入了新方法 AddOutPa ... -
添加yueue.ADOKeycap数据库组件到您的项目
2007-10-13 21:17 624为什么要添加引用?您必须通过在您的工程中引用ADOKeycap ... -
使用AODKeycap读取数据
2007-10-13 21:18 761请注意引用: usingSystem. ... -
使用ADOKeycap插入,更新,删除数据
2007-10-13 21:19 717在执行Delete命令时建议只使用Delete From 而不 ... -
在ADOKeycap中使用DataReader读取数据
2007-10-13 21:21 703注意 您在阅读本教程前最好先阅读 <将ADOKeyc ...
相关推荐
Asp.net 验证码控件Asp.net 验证码控件Asp.net 验证码控件
ASP.NET验证码 ASP.NET验证码 ASP.NET验证码 ASP.NET验证码 ASP.NET验证码 ASP.NET验证码
ASP.NET验证码 ASP.NET验证码ASP.NET验证码 ASP.NET验证码 ASP.NET验证码 ASP.NET验证码 ASP.NET验证码 ASP.NET验证码
asp.net验证码生成类asp.net验证码生成类asp.net验证码生成类
asp.net验证码完整实例asp.net验证码完整实例asp.net验证码完整实例asp.net验证码完整实例
asp.net验证码 asp.net验证码asp.net验证码
ASP.NET使用的验证码类,或许证书你需要的。
asp.net 验证码 实例 鼠标点击刷新验证码 按钮点击刷新验证码 验证码输入判断
asp.net 验证码实现代码 //确保生成的验证码是4位的,不是则重新产生 if(Session["code"].ToString().Trim().Length != 4) Session["code"] = RandNum(4); /// /// 生成图片并写入字符 /// /// 目标字符 //...
(ASP.NET)各式各样的验证码,有詳細的代碼例子。
波形扭曲彩色Asp.net验证码源码 波形扭曲彩色Asp.net验证码源码 波形扭曲彩色Asp.net验证码源码
验证码 asp.net 各种验证码 验证码 asp.net 各种验证码
一个ASP.NET验证码破解程序,适合学习
语音验证码源码、简单实现一个复杂的验证码、简单的验证码实例(全部源代码)讲解很清楚、51aspx无刷新仿google波形扭曲彩色Asp.net验证码、51gdi、validCode_51aspx、ChineseVerifyCode、Asp.net简单验证码源码
ASP.NET验证码(3种)ASP.NET验证码(3种)ASP.NET验证码(3种)ASP.NET验证码(3种)ASP.NET验证码(3种)
一个asp.net图片验证码,一个asp.net图片验证码,一个asp.net图片验证码
2、自动完成客户端以及服务器的验证码验证,Ajax验证,随用户输入即时 验证并友好提示。 3、可自定义验证码图片外观。 4、有水平方向垂直方向两种方式选择。 5、有数字、小写字母、大写字母三种及任意两种组合、三...
一个ASP.NET下实现动态验证码的例子,很好用
只要打开.NET 然后再工具箱内右键--》选择项--》浏览--》找到这里bin目录下的ZYDF.IMGCODE.dll文件 添加进工具箱后,直接拉到页面里就可以用了。 去的验证码的值this.IMGCODE1.Text 采用的是ajax无刷新技术。
asp.net 验证码实现 asp.net 验证码实现