`
jinvasshole
  • 浏览: 790777 次
文章分类
社区版块
存档分类
最新评论

asp.net中验证码的实现

 
阅读更多

主要用到一个类,一个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 MVC中实现验证码的功能。验证码的主要目的是防止自动机器人或恶意用户进行非法操作,例如垃圾邮件提交、恶意注册等。下面将详细讨论如何在ASP.NET MVC中实现验证码。 首先,...

    asp.net实现验证码功能

    在这个特定的场景中,我们关注的是如何在ASP.NET中实现验证码功能,这是一种用于验证用户身份的安全机制,通常用于防止自动化程序(如机器人)进行恶意操作。 验证码在网页上通常表现为一串随机生成的图像文字,...

    ASP.NET动态验证码

    在这个例子中,我们将深入探讨ASP.NET如何实现动态验证码的生成与验证。 首先,我们需要创建一个验证码类,这个类将负责生成随机的字符串和对应的图像。在.NET框架中,我们可以利用`Random`类生成随机数字,然后将...

    一个asp.net图片验证码

    在这个特定的案例中,我们关注的是一个与ASP.NET相关的图片验证码实现。 在ASP.NET中创建图片验证码通常涉及以下步骤: 1. **生成随机字符串**:首先,我们需要生成一个随机的字符串,这个字符串将被显示在图片上...

    ASP.NET 实现验证码

    在ASP.NET中实现验证码是一种常见的安全措施,用于防止自动化程序(如机器人)对网站进行恶意操作,如垃圾邮件提交、恶意登录尝试等。下面将详细介绍如何在ASP.NET中实现验证码。 验证码(CAPTCHA)全称为“全自动...

    asp.net MVC验证码

    在ASP.NET MVC框架中,验证码的实现通常涉及生成一串随机字符串或者图像,用户在提交表单前需要正确输入该验证码。 在标题提到的"MvcCode_1.0.dll"文件,它很可能是一个包含验证码功能的自定义控件或库。将这个DLL...

    Asp.Net 生成验证码

    在Asp.Net开发中,验证码是一种常见的安全机制,用于防止自动化程序(如机器人)进行恶意操作,例如批量注册、频繁提交表单等。本篇将详细介绍如何在Asp.Net环境中生成验证码,以及提供的源码文件的功能。 验证码的...

    ASP.net 带验证码的极其漂亮美观多项目可通用登陆界面。

    在ASP.NET中实现验证码通常涉及到以下步骤: 1. **创建验证控件**:ASP.NET 提供了`Validator`类,我们可以创建一个`CustomValidator`控件来处理自定义的验证逻辑,如生成和验证验证码。 2. **生成验证码**:在...

    asp.net 图片验证码

    ASP.NET 图片验证码是一种用于网络安全的身份验证机制,它在网页上以图像的形式显示一组随机生成的字符,用户需要输入这些字符以证明他们不是自动化程序。这种验证码的主要目的是防止机器人、爬虫和其他自动化工具...

    【ASP.NET编程知识】ASP.NET验证码实现(附源码).docx

    在 ASP.NET 中,验证码实现可以分为两部分:生成验证码字符串和生成验证码图片。 首先,需要生成验证码字符串,这可以通过使用随机数和字符串操作来实现。 然后,需要生成验证码图片,这可以通过使用 `System....

    验证码 asp.net 各种验证码

    首先,我们要了解ASP.NET验证码的基本原理。验证码通常由服务器生成一个随机的字符串或图像,并将其存储在服务器端的会话(Session)中。客户端在页面加载时显示这个验证码,用户输入后,服务器会比较用户输入与存储...

    asp.net图片验证码

    在ASP.NET中实现图片验证码,主要涉及到以下几个关键知识点: 1. **生成随机字符串**:首先,我们需要创建一个包含随机字母和数字的字符串。这通常通过`Random`类和字符数组实现,确保每次请求时生成的字符串都是...

    asp.net mvc 验证码

    asp.net mvc的验证码,不解释---------------------

    Asp.net 验证码控件

    在本篇文章中,我们将深入探讨Asp.net验证码控件的工作原理、类型以及如何在实际项目中应用。 **1. Asp.net验证码控件的原理** 验证码控件的主要目的是创建一个动态生成的、一次性使用的图像,其中包含随机的字母或...

    asp.net绘制验证码示例

    在这个"asp.net绘制验证码示例"中,我们将深入探讨如何在ASP.NET环境中生成和验证图像验证码。 验证码(CAPTCHA)是"Completely Automated Public Turing test to tell Computers and Humans Apart"的缩写,它是一...

    c#语言编写asp.net获取验证码

    在ASP.NET开发中,验证码(CAPTCHA)是一种常用的安全机制,用于...通过以上步骤,你就可以在C#语言的ASP.NET环境中实现一个基本的验证码功能。为了提高用户体验和安全性,还可以根据实际需求进行更多的定制和优化。

    【ASP.NET编程知识】Asp.net Web Api实现图片点击式图片验证码功能.docx

    在这个特定的案例中,我们将探讨如何利用ASP.NET Web API来实现一种特殊的验证码功能,即图片点击式的验证码。 验证码的主要目的是防止自动化程序(如机器人)进行恶意操作,通常要求用户完成一项简单的任务以证明...

    asp.net短信登录验证码和图片验证程序源码

    资源名:asp.net短信登录验证码和图片验证程序源码 资源类型:程序源代码 源码说明: 1.实现了验证码倒计时的功能 1.以下验证码例子采用的是先获取手机号文字验证码,如果文字验证码收不到,将采用语音播放验证码的...

    ASP.NET中文验证码

    在ASP.NET中实现中文验证码,主要依赖于GDI+(Graphics Device Interface Plus),这是.NET Framework提供的一组图形处理API。GDI+允许开发者创建和控制图形,包括文本、线条、形状以及图像的绘制。在制作中文验证码...

Global site tag (gtag.js) - Google Analytics