`
piperzero
  • 浏览: 3477338 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

ado.net做验证码

 
阅读更多

经过这次的实训学到了不少东西,下面来讲讲我学到的做验证码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;

public partial class validate : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)

{

this.CreateCheckCodeImage(GenerateCheckCode());

}

private string GenerateCheckCode()

{

int number;

char code;

string checkCode = String.Empty;

System.Random random = new Random();

for (int i = 0; i < 5; i++)

{

number = random.Next();

if (number % 2 == 0)

code = (char)('0' + (char)(number % 10));

else

code = (char)('a' + (char)(number % 26));

checkCode += code.ToString();

}

Response.Cookies.Add(new HttpCookie("CheckCode", checkCode));

Session["CheckCode"] = checkCode;

return checkCode;

}





private void CreateCheckCodeImage(string checkCode)

{

if (checkCode == null || checkCode.Trim() == String.Empty)

return;

System.Drawing.Bitmap image = new System.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length * 12.5)), 30);

Graphics g = Graphics.FromImage(image);

try

{

//生成随机生成器

Random random = new Random();

//清空图片背景色

g.Clear(Color.White);

//画图片的背景噪音线

for (int i = 0; i < 25; i++)

{

int x1 = random.Next(image.Width);

int x2 = random.Next(image.Width);

int y1 = random.Next(image.Height);

int y2 = random.Next(image.Height);

g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2);

}

Font font = new System.Drawing.Font("Arial", 16, (System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic));

System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2f, true);

g.DrawString(checkCode, font, brush, 2, 2);

//画图片的前景噪音点

for (int i = 0; i < 100; i++)

{

int x = random.Next(image.Width);

int y = random.Next(image.Height);

image.SetPixel(x, y, Color.FromArgb(random.Next()));

}

//画图片的边框线

g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1);

System.IO.MemoryStream ms = new System.IO.MemoryStream();

image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);

Response.ClearContent();

Response.ContentType = "image/Gif";

Response.BinaryWrite(ms.ToArray());

}

finally

{

g.Dispose();

image.Dispose();

}

}

}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class UseCheckCode : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}
protected void Unnamed1_Click(object sender, EventArgs e)
{
if (((string)Session["CheckCode"]) != txtTest.Text)
{
ErrorMsg_CheckCode.Text = "验证码错误!";
}
else
{
ErrorMsg_CheckCode.Text = "验证码正确!";
}

}
protected void Unnamed1_Click1(object sender, EventArgs e)
{
}
}

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="UseCheckCode.aspx.cs" Inherits="UseCheckCode" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<img id="vcodeimg"; width="100px" height="20px" alt="换张图片"; onclick="this.src='Checkcode.aspx?time='+Math.random()"; src="Checkcode.aspx"; title="换张图片"/>
<asp:Button Height="30px" Width="100px" runat="server" Text="看不清,换张图!"
onclick="Unnamed1_Click1"/> <%--onclick="this.src='Checkcode.aspx?time='+Math.random()"--%>
<script language="javascript" type="text/javascript">

document.getElementById('vcodeimg').src = 'Checkcode.aspx?time=' + Math.random();
</script>
<asp:Button runat="server" Text="提交" Width="98px" Height="35px"
onclick="Unnamed1_Click"/>
<asp:TextBox ID="txtTest" runat="server"></asp:TextBox>
<asp:Label ID="ErrorMsg_CheckCode" runat="server" Text="Label"></asp:Label>
</div>
</form>
</body>
</html>

分享到:
评论

相关推荐

    Net编程学习中积累的代码

    ADO.Net 分页 验证码 文件操作 控件 上传操作 HTML大全

    ASP.NET学习大全

    ADO.NET在开发中的部分使用方法和技巧.txt ADO.NET中的视图和过滤器.doc ASP .NET - ArrayList对象.txt asp.net 2.0中TREEVIEW中动态增加结点.txt Asp.net 实现验证码功能的Web控件.txt asp.net常用的javascript经典...

    asp.net学习大全(超全面的资料整合)

    ADO.NET在开发中的部分使用方法和技巧.txt ADO.NET中的视图和过滤器.doc ASP .NET - ArrayList对象.txt asp.net 2.0中TREEVIEW中动态增加结点.txt Asp.net 实现验证码功能的Web控件.txt asp.net常用的javascript经典...

    ASP.NET 新闻发布系统(添加了后台验证,防攻击)

    3天多的时间开发的一个新闻发布网站系统,带有单独的后台管理功能,本系统是基于ASP.NET和SQL SERVER 2005 开发的,运用ADO.NET数据库技术,该系统功能较为全面,后天管理功能也很全面,登录带有验证码验证功能,...

    ASP.NET 新闻发布系统

    3天多的时间开发的一个新闻发布网站系统,带有单独的后台管理功能,本系统是基于ASP.NET和SQL SERVER 2005 开发的,运用ADO.NET数据库技术,该系统功能较为全面,后天管理功能也很全面,登录带有验证码验证功能,...

    asp.net知识库

    ADO.NET 2.0 大批量数据操作和多个动态的结果集 ADO.NET 2.0 异步处理 在ASP.NET中使用WINDOWS验证方式连接SQL SERVER数据库 改进ADO.Net数据库访问方式 ASP.NET 2.0 绑定高级技巧 简单实用的DataSet更新数据库的类+...

    亮剑.NET深入体验与实战精要2

    5.1.2 趣味理解ADO.NET对象模型 202 5.1.3 进水笼头——建立Connection 204 5.1.4 抽水机——Command 206 5.1.5 输水管——DataAdapter 209 5.1.6 输水管——DataReader 210 5.1.7 随用随关,释放资源 212 5.1.8 ...

    ASP.NET 新闻发布系统(修改了新闻显示方式)

    3天多的时间开发的一个新闻发布网站系统,带有单独的后台管理功能,本系统是基于ASP.NET和SQL SERVER 2005 开发的,运用ADO.NET数据库技术,该系统功能较为全面,后天管理功能也很全面,登录带有验证码验证功能,...

    亮剑.NET深入体验与实战精要3

    5.1.2 趣味理解ADO.NET对象模型 202 5.1.3 进水笼头——建立Connection 204 5.1.4 抽水机——Command 206 5.1.5 输水管——DataAdapter 209 5.1.6 输水管——DataReader 210 5.1.7 随用随关,释放资源 212 5.1.8 ...

    ASP.NET Night Words

    第7章 ado.net介绍 90 7.1 ado.net简介 90 7.2 connection对象 93 7.3 command对象 100 7.4 datareader对象 101 7.5 dataadapter对象 105 7.6 dataset对象 105 7.7 datatable对象 108 7.8 参数化sql语句 110...

    asp.net专家疑难解答200问

    如何解决ADO.NET访问ACCESS数据库出现“操作必须使用一个可更新的查询”的问题 168.如何从EXCEL文件中读取数据 169.如何备份和恢复数据库 第9章 ASP.NET安全策略 第10章 常用功能及函数集 180....

    ASP.NET 新闻发布系统(有后台管理功能)

    3天多的时间开发的一个新闻发布网站系统,带有单独的后台管理功能,本系统是基于ASP.NET和SQL SERVER 2005 开发的,运用ADO.NET数据库技术,改系统功能较为全面,后天管理功能也很全面,登录带有验证码验证功能,...

    C # 做 的 银 行 系 统

    这个系统采用的开发工具是Visual Studio 2005 ,用到的技术有ADO.NET,XPath,XML,验证码,MD5密码加密,使用XML做数据库,替代SQL数据库,实现银行的取款,存款,转账,查询,历史记录, 系统用到的类有XMLDocument,...

    asp.net专家疑难解答200问源码

    167.如何解决ADO.NET访问ACCESS数据库出现“操作必须使用一个可更新的查询”的问题 168.如何从EXCEL文件中读取数据 169.如何备份和恢复数据库 第9章 ASP.NET安全策略 第10章 常用功能及函数集 180.如何在ASP...

    C#网上书店源码

    使用了ADO.NET实现数据库访问; SiteMapPath、TreeView、Menu实现系统的导航。模板页对页面的布局,用户自定 义控件(自己编写的验证码控件和图片动态变化的控件),验证控件实现页面的验证 功能。使用了FreeTextBox...

    较为全面的Asp.net提交验证方案分析 (上)

    为解决上述问题,我曾走过不少弯路,后来总结出了一个方案可以很好的解决这些问题,本文将结合ADO.NET Entity Framework技术来介绍此方案: 这方案的核心就是通过数据库统一存储所有请求页面所对应的验证码及其相

    网上书店源码20121130

    使用了ADO.NET实现数据库访问; SiteMapPath、TreeView、Menu实现系统的导航。模板页对页面的布局,用户自定 义控件(自己编写的验证码控件和图片动态变化的控件),验证控件实现页面的验证 功能。使用了FreeTextBox...

    C#网上书店系统

    使用了ADO.NET实现数据库访问; SiteMapPath、TreeView、Menu实现系统的导航。模板页对页面的布局,用户自定 义控件(自己编写的验证码控件和图片动态变化的控件),验证控件实现页面的验证 功能。使用了FreeTextBox...

    c#基础实例

    第五章 数据库应用 实例1 使用ADO.Net实现通用数据库编程1 实例2 使用ADO.Net实现通用数据库编程2 实例3 使用DataSet对数据库进行操作1 实例4 使用DataSet对数据库进行操作2 实例5 使用DataGrid...

Global site tag (gtag.js) - Google Analytics