All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
技巧:PHP+MYSQL动态网页编程纠错指南_[PHP教程]
ASP.NET应用技巧:AspNetForums的数据层概述_.net资料_编程技术
ASP.NET,Ajax调用WCFService(VS2008,beta2,简体中文版)_[Asp.Net教程]
Php高手带路--问题汇总解答_[PHP教程]
将ASP.NET所需的程序集dll放在别的目录下_[Asp.Net教程]
利用Ajax传递Xml文档_JavaScript技术_编程技术
基于标准的web项目开发模式探索_JavaScript技术_编程技术
SQL循序渐进(24)嵌入SQL_[SQL,Server教程]
.NET内置对象之Application对象_[Asp.Net教程]
网友分享:TopStyle Pro 的使用技巧_[Html教程]
Reading number is top 10 pictures
身材野火台灣美女1
yy365网站上的美女1
人造器官和铁肺人
代沟,真好
毕姥爷事件,告诉你6条真理
So beauty, will let you spray blood10
传几朵花
漂亮的跳舞妹妹2
Ashlynn Brooke a group sexy photo3
乳娘帕梅拉安德森1
Download software ranking
linux初级教程
网络管理员第三版
SQL2000 For 4IN1
Visual C++界面编程技术
Ashlynn Video4
Ashlynn Video2
圣殿祭司的ASP.NET.2.0.开发详解-使用C#
卡丁车单机版
Boxer's Top ten classic battle8
WebService在.NET中的实战应用教学视频 → 第1集
delv published in(发表于) 2014/1/16 9:27:54 Edit(编辑)
Asp.Net,动态生成验证码_[Asp.Net教程]

Asp.Net,动态生成验证码_[Asp.Net教程]

Asp.Net 动态生成验证码_[Asp.Net教程]























我们在设计用户登录模块时,经常会用到验证码,可以有效地防止黑客软件的恶意破解,现公开我常用的验证码的源代码,生成效果如图:
使用方法:
1、在Web项目中添加一个类,如“CreateImage.cs”,然后将我公布的源代码Copy进去;
2、再新建一个Web窗体,如“Image.aspx”,在Page_Load中加入代码 “CreateImage.DrawImage ();”当然别忘了加上对类的引用哦!!
3、在页面的合适位置上(你想放验证码的位置)上加上如下javascript代码就OK 了,




源代码如下:
复制C#代码保存代码///


/// 验证码模块
///

public class CreateImage
{
public static void DrawImage()
{
CreateImage img = new CreateImage();
HttpContext.Current.Session["CheckCode"] = img.RndNum(4);
img.CreateImages(HttpContext.Current.Session["CheckCode"].ToString());
}




///


/// 生成验证图片
///

/// 验证字符
private void CreateImages(string checkCode)
{
int iwidth = (int) (checkCode.Length * 13);
System.Drawing.Bitmap image = new System.Drawing.Bitmap(iwidth, 23);
Graphics g = 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", "Microsoft Sans Serif", "Comic Sans MS", "Arial", "宋体" };
Random rand = new Random();
//随机输出噪点
for (int i = 0; i < 50; i++)
{
int x = rand.Next(image.Width);
int y = rand.Next(image.Height);
g.DrawRectangle(new Pen(Color.LightGray, 0), x, y, 1, 1);
}




//输出不同字体和颜色的验证码字符
for (int i = 0; i < checkCode.Length; i++)
{
int cindex = rand.Next(7);
int findex = rand.Next(5);




Font f = new System.Drawing.Font(font[findex], 10, System.Drawing.FontStyle.Bold);
Brush b = new System.Drawing.SolidBrush(c[cindex]);
int ii = 4;
if ((i + 1) % 2 == 0)
{
ii = 2;
}
g.DrawString(checkCode.Substring(i, 1), f, b, 3 + (i * 12), ii);
}
//画一个边框
g.DrawRectangle(new Pen(Color.Black, 0), 0, 0, image.Width - 1, image.Height - 1);




//输出到浏览器
System.IO.MemoryStream ms = new System.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();
}




///


/// 生成随机的字母
///

/// 生成字母的个数
/// string
private string RndNum(int VcodeNum)
{
string Vchar = "0,1,2,3,4,5,6,7,8,9";
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(VcArray.Length);
if (temp != -1 && temp == t)
{
return RndNum(VcodeNum);
}
temp = t;
VNum += VcArray[t];
}
return VNum;
}
}




附件: AspNetCheckCodeExample.rar




来源: 阿良.NET












































添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.