主要用到一个类,一个aspx页面,还有一个使用图片验证码的aspx页面。
随机图片生成类:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
usingSystem.Drawing;
namespaceSooyie.Common
{
///<summary>
///产生随即图片
///</summary>
publicsealedclassRandImage
{
privateconststringRandCharString="0123456789";
privateintwidth;
privateintheight;
privateintlength;
///<summary>
///默认构造函数,生成的图片宽度为48×24,随即字符串字符个数
///</summary>
publicRandImage():this(48,24,4)
{
}
///<summary>
///指定生成图片的宽和高,默认生成图片的字符串长度为4个字符
///</summary>
///<paramname="width"></param>
///<paramname="height"></param>
publicRandImage(intwidth,intheight):this(width,height,4)
{
}
///<summary>
///指定生成图片的宽和高以及生成图片的字符串字符个数
///</summary>
///<paramname="width"></param>
///<paramname="height"></param>
///<paramname="length"></param>
publicRandImage(intwidth,intheight,intlength)
{
this.width=width;
this.height=height;
this.length=length;
}
///<summary>
///以默认的大小和默认的字符个数产生图片
///</summary>
///<returns></returns>
publicImageGetImage()
{
Bitmapimage=newBitmap(width,height);
Graphicsg=Graphics.FromImage(image);
g.Clear(Color.White);
stringrandString="";
Randomrandom=newRandom();
do
{
//使用DateTime.Now.Millisecond作为生成随机数的参数,增加随机性
randString+=RandCharString.Substring(random.Next(DateTime.Now.Millisecond)%RandCharString.Length,1);
}
while(randString.Length<4);
floatemSize=(float)width/randString.Length;
Fontfont=newFont("Arial",emSize,(System.Drawing.FontStyle.Bold|System.Drawing.FontStyle.Italic));
Penpen=newPen(Color.Silver);
#region画图片的背景噪音线
intx1,y1,x2,y2;
for(inti=0;i<25;i++)
{
x1=random.Next(image.Width);
y1=random.Next(image.Height);
x2=random.Next(image.Width);
y2=random.Next(image.Height);
g.DrawLine(pen,x1,y1,x2,y2);
}
#endregion
#region画图片的前景噪音点
for(inti=0;i<100;i++)
{
x1=random.Next(image.Width);
y1=random.Next(image.Height);
image.SetPixel(x1,y1,Color.FromArgb(random.Next(Int32.MaxValue)));
}
#endregion
g.DrawString(randString,font,Brushes.Red,2,2);
g.Dispose();
returnimage;
}
}
}
将图片转换成html资源的aspx页面,这个页面前台没有任何代码,主要后台(.cs)的功能。
usingSystem;
usingSystem.Data;
usingSystem.Configuration;
usingSystem.Collections;
usingSystem.Web;
usingSystem.Web.Security;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
usingSystem.Web.UI.WebControls.WebParts;
usingSystem.Web.UI.HtmlControls;
usingSystem.IO;
usingSystem.Drawing;
usingSystem.Drawing.Imaging;
usingSooyie.Common;
publicpartialclassCheckImage:System.Web.UI.Page
{
protectedvoidPage_Load(objectsender,EventArgse)
{
if(!Page.IsPostBack)
{
RandImagerandImage=newRandImage();
System.Drawing.Imageimage=randImage.GetImage();
System.IO.MemoryStreammemoryStream=newMemoryStream();
image.Save(memoryStream,ImageFormat.Jpeg);
Response.ClearContent();
Response.ContentType="image/gif";
Response.BinaryWrite(memoryStream.ToArray());
image.Dispose();
Response.End();
}
}
}
下面是怎么使用的例子:
<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="Login.aspx.cs"Inherits="Admin_Login"%>
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<headrunat="server">
<title>后台管理用户登录</title>
</head>
<body>
<formid="form1"runat="server">
<div>
<tableborder="0"cellpadding="0"cellspacing="0"width="480">
<tr>
<tdcolspan="2"align="center">
公文管理系统后台登陆</td>
</tr>
<tr>
<tdstyle="width:83px">
用户名</td><td>
<asp:TextBoxID="txtUserName"runat="server"></asp:TextBox>
<asp:RequiredFieldValidatorID="RequiredFieldValidator1"runat="server"ControlToValidate="txtUserName"
ErrorMessage="用户名"></asp:RequiredFieldValidator></td>
</tr>
<tr>
<tdstyle="height:19px;width:83px;">
密码</td><td>
<asp:TextBoxID="txtPassword"runat="server"TextMode="Password"></asp:TextBox>
<asp:RequiredFieldValidatorID="RequiredFieldValidator2"runat="server"ControlToValidate="txtPassword"
ErrorMessage="密码"></asp:RequiredFieldValidator></td>
</tr>
<tr>
<tdstyle="height:19px;width:83px;">
校验码</td><td>
<asp:TextBoxID="txtCheckCode"runat="server"></asp:TextBox><imgsrc="CheckImage.aspx"alt="校验码"/>
<asp:RequiredFieldValidatorID="RequiredFieldValidator3"runat="server"ControlToValidate="txtCheckCode"
ErrorMessage="校验码必填"></asp:RequiredFieldValidator></td>
</tr>
<tr>
<tdstyle="width:83px">
<asp:ButtonID="btnLogin"runat="server"Text="登陆"OnClick="btnLogin_Click"/></td><tdstyle="width:9px">
<inputid="Reset1"type="reset"value="清除"/></td>
</tr>
</table>
</div>
<asp:LiteralID="lStatus"runat="server"Visible="False"></asp:Literal>
</form>
</body>
</html>
请注意:<img src="CheckImage.aspx" alt="校验码" />这一句就使用了CheckImage.aspx.cs类中的功能,将图片通过HTTP输出。
分享到:
相关推荐
基于asp.net mvc验证码的实现。
asp.net验证码实现,利用了System.Drawing实现的。
一个asp.net图片验证码,一个asp.net图片验证码,一个asp.net图片验证码
一个ASP.NET下实现动态验证码的例子,很好用
验证码 asp.net 各种验证码 验证码 asp.net 各种验证码
ASP.NET实现验证码!!简单!易懂!
Asp.Net 生成验证码 验证码详细源码,自动更新
Asp.net 验证码控件Asp.net 验证码控件Asp.net 验证码控件
asp.net mvc的验证码,不解释---------------------
Asp.net 实现验证码功能的Web控件Asp.net 实现验证码功能的Web控件Asp.net 实现验证码功能的Web控件Asp.net 实现验证码功能的Web控件
c#语言编写asp.net获取验证码。vs2005工具编写。很适用。防止恶意登录你的网站。
这是一个已具有随机验证码,通过CSS等控制,画面显得美观雅致而且适用多个项目的登陆界面,登陆界面项目名称可随意更改。
一个简单的asp.net绘制验证码示例,适合学习用。略加改进商用也可。
ASP.NET验证码 ASP.NET验证码 ASP.NET验证码 ASP.NET验证码 ASP.NET验证码 ASP.NET验证码
asp.net中实现验证码 图片 字母 数字
3个asp.net的验证码后台生网页 开发环境 VS2010 .Net 版本 4.0
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.NET2.0验证码控件
asp.net+验证码,验证码 asp.net+验证码,验证码 asp.net+验证码,验证码