.net完整的图文验证
摘自:http://blog.csdn.net/durongjian/article/details/4336380
一、创建ValidaeCode类库工程:
1、创建ValidaeCode类库工程,在[解决胜方案资源管理器]面板中,右键单击[ValidateCode]节点,并选择[属性]命令。
2、单击[属性]命令,选中[应用程序],半分别把程序集名称和默认命名空间两个属性值设为“ASPNETAJAXWeb.ValidateCode”和“ASPNETAJAXWeb.ValidateCode.Page”。
3、ValidateCode.cs:

using System;
using System.Text;
using System.Drawing;
using System.Drawing.Imaging;
using System.Drawing.Drawing2D;
using System.IO;
/// <summary>
///ValidateCode 的摘要说明
/// </summary>
namespace ASPNETAJAXWeb.ValidateCode.Page
{
public class ValidateCode : System.Web.UI.Page
{
private const double IMAGELENGTHBASE = 12.5;
private const int IMAGEHEIGTH = ;
private const int IMAGELINENUMBER = ;
private const int IMAGEPOINTNUMBER = ;
public static string VALIDATECODEKEY = "VALIDATECODEKEY";
private int length = ;//验证码的数字个数
private string code = string.Empty;
public ValidateCode()
{
//
//TODO: 在此处添加构造函数逻辑
//
}
public int Length
{
get { return length; }
set { length = value; }
}
public string Code
{
get { return Code; }
} /// <summary>
/// 创建随机验证码
/// </summary>
/// <param name="length"></param>
/// <returns></returns>
public string CreateCode(int length)
{
if (length <= )
return string.Empty;
Random random = new Random();
StringBuilder sbCode = new StringBuilder();
for (int i = ; i < length; i++)
{
sbCode.Append(random.Next(, ));
}
code = sbCode.ToString();
Session[VALIDATECODEKEY] = code;
return code;
} /// <summary>
/// 创建验证码的图片和验证码
/// </summary>
/// <param name="code"></param>
public void CreateValidateImage(string code)
{
if (string.IsNullOrEmpty(code) == true)
return;
Session[VALIDATECODEKEY] = code;
Bitmap image = new Bitmap((int)Math.Ceiling((code.Length * IMAGELENGTHBASE)), IMAGEHEIGTH);
Graphics g = Graphics.FromImage(image); ///随机数生成器
Random random = new Random();
try
{
g.Clear(Color.White);
///绘制图片的干扰线
int x1, x2, y1, y2;
for (int i = ; i < IMAGELINENUMBER; i++)
{
x1 = random.Next(image.Width);
x2 = random.Next(image.Height);
y1 = random.Next(image.Width);
y2 = random.Next(image.Height);
} ///绘制验证码
Font font = new Font("TaHoma", , FontStyle.Bold | FontStyle.Italic);
LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(, , image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2f, true);
g.DrawString(code, font, brush, 2.0f, 2.0f); ///画图片的前景噪音点
int x, y;
for (int i = ; i < IMAGEPOINTNUMBER; i++)
{
x = random.Next(image.Width);
y = random.Next(image.Height);
///绘制点
image.SetPixel(x, y, Color.FromArgb(random.Next()));
} ///
g.DrawRectangle(new Pen(Color.Silver), , , image.Width - , image.Height - ); ///
MemoryStream ms = new MemoryStream();
image.Save(ms, ImageFormat.Gif); ///
Response.ClearContent();
Response.ContentType = "image/Gif";
Response.BinaryWrite(ms.ToArray());
}
finally
{
g.Dispose();
image.Dispose();
}
} protected override void OnLoad(EventArgs e)
{
CreateValidateImage(length);
}
public void CreateValidateImage(int length)
{
code = CreateCode(length);
CreateValidateImage(code);
}
}
}
4、在另外一个ASP.NET应用程序中添加Web窗体页ValidateCode.aspx,并删除该页面的代码隐藏文件(ValidateCode.aspx.cs)。
5、删除 ValidateCode.aspx页面的HTML代码,仅仅保留一行使用“@Page”指令的如下代码:
<%@ Page Language="C#" AutoEventWireup="false" Inherits="ASPNETAJAXWeb.ValidateCode.Page.ValidateCode" %>
6、使用图文验证页面:把 ValidateCode.aspx页面复制到要使用该页面的ASP.NET应用程序中,使用引用的方法把程序集添加到Bin目录下,在使用验证码的页面上添加一下Image控件,并将该控件的ImageUrl属性的值设置为ValidateCode.aspx。
<asp:Image ID="Image1" runat="server" ImageUrl="~/ValidateCode.aspx" />
7、可通过判断Session["VALIDATECODEKEY"]与用户所输入的值是否相等检查用户输入的验证码是否正确。
.net完整的图文验证的更多相关文章
- jquery-4 完整表单验证实例
jquery-4 完整表单验证实例 一.总结 一句话总结:在form的jquery对象中返回false即可终止表单提交. 1.验证的显示错误消息如何布局? 开始时隐藏,出现错误后显示 10 .erro ...
- Linux系统(X64)安装Oracle11g完整安装图文教程另附基本操作
一:查看本地ssh服务 Linux系统下安装启动ssh服务,下面以CentOS版本Linux系统为例: 1.检查是否装了SSH包 rpm -qa |grep ssh 2.没有安装SSH直接YUM安装 ...
- 完整注册+JQuery验证+selert后台校验
Java代码 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8 ...
- Android 代码混淆、第三方平台加固加密、渠道分发 完整教程(图文)
第一步:代码混淆(注意引入的第三方jar) 在新版本的ADT创建项目时,混码的文件不再是proguard.cfg,而是project.properties和proguard-project.txt. ...
- Linux系统(X64)7 安装Oracle11g完整安装图文教程另附基本操作
在linux 7.6 安装 oracle 11g mount 挂载yum源 yum –y sys* gcc* lib* sys* ma* un* gli* elf* bin* com* ...
- 比较完整的URL验证
转自:http://wuchaorang.2008.blog.163.com/blog/static/4889185220135279223253/ function IsURL(str_url){v ...
- Linux系统(X32)安装Oracle11g完整安装图文教程另附基本操作
一.修改操作系统核心参数 在Root用户下执行以下步骤: )修改用户的SHELL的限制,修改/etc/security/limits.conf文件 输入命令:vi /etc/security/limi ...
- Linux 安装Oracle11g完整安装图文教程另附基本操作 (分享)
一.修改操作系统核心参数 在Root用户下执行以下步骤: 1)修改用户的SHELL的限制,修改/etc/security/limits.conf文件 输入命令:vi /etc/security/lim ...
- Asp.net MVC验证那些事(4)-- 自定义验证特性
在项目的实际使用中,MVC默认提供的Validation Attribute往往不够用,难以应付现实中复杂多变的验证需求.比如, 在注册用户的过程中,往往需要用户勾选”免责声明”,这个checkbox ...
随机推荐
- Hadoop-2.2.0中文文档——Common-Hadoop HTTP web控制台认证
简单介绍 此文档描写叙述了怎样配置Hadoop HTTP web控制台,去要求用户认证. 默认地,Hadoop HTTP web控制台(JobTracker, NameNode, TaskTracke ...
- Java-JDBC调用批处理、存储过程、事务
一.使用Batch批量处理数据库 当需要向数据库发送一批SQL语句执行时,应避免向数据库一条条的发送执行,而应采用JDBC的批处理机制,以提升执行效率.; 1.实现批处理有两种方式,第一种方式: S ...
- android 内存溢出oom错误的一些小见解
转:http://blog.csdn.net/xuhui_7810/article/details/9493681 我们在代码里调用setBackgroundResource(int resid)来设 ...
- EasyUI 常规用法
(function () { // 获取树的路径,如 组织分类 > YHBH > 湖南省卫生厅 > 湖南省长沙市 var getBreadcrumbs = funct ...
- [转]Unicode和UTF-8的关系
Unicode和UTF-8的关系作者: 张军 原文地址: http://blog.renren.com/blog/284133452/485453790 今天中午,我突然想搞清楚Unicode和UTF ...
- 在Java程序中使用Hibernate
Hibernate是一种ORM框架,ORM全称为Object-Relative Database-Mapping,在Java对象与关系数据库之间建立某种映射,以实现直接存取Java对象(一般为实体类) ...
- LinkedHashMap源码剖析
首先还是类似的,我们写一个简单的LinkedHashMap的程序: public class Test { public static void main(String[] args) { Map&l ...
- java之 22天 GUI 图形界面编程(二)
转自:http://takeme.iteye.com/blog/1876853 模拟window开打文件 import java.awt.Button; import java.awt.Dialog; ...
- go语言之进阶篇指针类型和普通类型的方法集
方法集 类型的方法集是指可以被该类型的值调用的所有方法的集合. 用实例实例 value 和 pointer 调用方法(含匿名字段)不受方法集约束,编译器编总是查找全部方法,并自动转换 receiver ...
- 浅析Linux线程调度
在Linux中,线程是由进程来实现,线程就是轻量级进程( lightweight process ),因此在Linux中,线程的调度是按照进程的调度方式来进行调度的,也就是说线程是调度单元.Linux ...