asp.net页面的验证码代码

在需要验证的页面,加上<IMG alt="" src="CheckCode.aspx">

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace common
{
 /// <summary>
 /// CheckCode 的摘要说明。
 /// </summary>
 public class ValidateCode : System.Web.UI.Page
 {
  private void Page_Load(object sender, System.EventArgs e)
  {
   this.CreateCheckCodeImage(GenerateCheckCode());
  }

#region Web 窗体设计器生成的代码
  override protected void OnInit(EventArgs e)
  {
   //
   // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
   //
   InitializeComponent();
   base.OnInit(e);
  }
 
  /// <summary>
  /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  /// 此方法的内容。
  /// </summary>
  private void InitializeComponent()
  {   
   this.Load += new System.EventHandler(this.Page_Load);
  }
  #endregion

private string GenerateCheckCode()
  {
   int number;
   char code;
   string checkCode = String.Empty;

System.Random random = new Random();

for(int i=0; i<4; i++) // 控制长度
   {
    number = random.Next();

if(number % 2 == 0)
     code = (char)('0' + (char)(number % 10));
    else
     code = (char)('0' + (char)(number % 10)); // 使用数字
     //code = (char)('A' + (char)(number % 26)); // 使用字母

checkCode += code.ToString();
   }

Response.Cookies.Add(new HttpCookie("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)), 22);
   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", 12, (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.Black, Color.Black, 1.2f, true); // 两个Color.Black为字母混合颜色
    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();
   }
  }
 }
}

posted on 2005-12-20 22:24 钛网络 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/eleccomm2000/archive/2005/12/20/301124.html

asp.net页面的验证码代码相关推荐

  1. ASP .NET登录界面用户验证码代码

    //ASP .NET用户登录界面经常用到验证码代码如下 private void Page_Load(object sender, System.EventArgs e)   {    // 在此处放 ...

  2. jquery调用asp.net 页面后台的实现代码

    先创建一个aspx页面编写一个客户端控件<input type="button" id="AjaxDemo" value="AjaxDemo&q ...

  3. 【ASP.NET 进阶】验证码的实现

    由于本人现在是做.NET的,负责的模块有需要验证码的功能,虽然用公司的模版简单的复制粘贴代码,就把功能搞定了,但是觉得还是自己动手了解下其功能实现,在网上找了半天没找到可靠的代码,只有ASP .NET ...

  4. asp.net 页面全生命周期

    .Net 托管代码和非托管代码的区别 后台代码隐藏/显示前台控件 .Net 页面生命周期 2012-03-21 13:31:08|  分类: .NET |  标签:.net  页面生命周期  c#  ...

  5. ASP.NET页面与IIS底层交互和工作原理详解(一)

    第一回: 引言 我查阅过不少Asp.Net的书籍,发现大多数作者都是站在一个比较高的层次上讲解Asp.Net.他们耐心.细致地告诉你如何一步步拖放控件.设置控件属性.编写CodeBehind代码,以实 ...

  6. asp实现注册登录界面_(06)ASP登录页面的设计思路

    一.登录面页的设计思路 登录页面有3个部分组成: 1. 用户名 2. 密码 3. 验证码 登录页面的显示是由下图所示的index.asp文件在服务器端执行后返顺到浏览器显示的.这个index.asp文 ...

  7. ASP.NET页面之间传递值的几种方式

    页面传值是学习asp.net初期都会面临的一个问题,总的来说有页面传值.存储对象传值.ajax.类.model.表单等.但是一般来说,常用的较简单有QueryString,Session,Cookie ...

  8. HttpApplication事件ASP.NET页面周期

    学习吧少年........................... 修改中........... 当一次请求到达IIS 1.http.sys将请求发送到指定的应用程序池. 2.应用程序池再将请求交给池中 ...

  9. [转]ASP.NET页面生命周期描述

    ASP.NET页面生命周期描述 vigorID:Vigorcsdn 在以前写个一篇关于ASP.NET页面生命周期的草稿,最近又看了看ASP.NET,做个补充,看看页面初始过程到底是怎么样的 下面是AS ...

最新文章

  1. php 分页类使用,php 分页类
  2. 【微信小程序企业级开发教程】前台收集数据更新数据库表方法
  3. [问题记录] cl-api 在 CCL 中生成的文档无内容
  4. Linear Regression总结2
  5. cpp 一个文件分成两个文件写_为ORB-SLAM2写一个launch文件
  6. 新疆计算机一级考试试题手机软件,新疆维吾尔自治区计算机一级考试理论题库(最新最完整)...
  7. linux cmake编译安装mysql_Linux源码安装MySQL 5.6.12 (Cmake编译)
  8. python加入中小学课程_通知:中小学将新增一门课!对2008-2013年出生的孩子影响最大!...
  9. 解决Eclipse 项目报错:Unbound classpath container: ‘JRE System Library [JavaSE-1.7]
  10. 华为鸿蒙净水机,华为鸿蒙OS 2.0手机版功能抢先曝光
  11. ip68能达到什么程度防水_电子主控电路板使用什么样的胶水可以达到防水效果?...
  12. Beta版本测试第二天
  13. 计算机组成原理r型指令logisim实现_全国计算机二级MS office选择题增分速记宝典!...
  14. android消息通知布局,Android Design
  15. 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。...
  16. JAVA之JAR文件
  17. dsm加密linux,DSM 6.2.2最新引导修改版,支持3615xs,已更新下载链接
  18. UVALive - 5857 Captain Q's Treasure
  19. windows 安装apex_apex 安装/使用 记录
  20. 【STM32学习笔记】#001 前期准备

热门文章

  1. 查找重复文件_重复文件查找和磁盘整理工具:Tidy Up
  2. linux 挂载raid_linux初学者-磁盘阵列篇
  3. 密钥生成并配置_如何在 CentOS 8 上设置 SSH 密钥
  4. c语言写报告抽象数据类型,数据结构(C语言版)第一章 抽象数据类型的表示与实现...
  5. mui中子页面标志html,MUI 图标筛选切换(父页面传值子页面)代码
  6. java quartz CronScheduleBuilder
  7. PyPA Creating Documentation
  8. Python itertools chain
  9. Eclipse字符集环境配置
  10. Cobra命令行框架及使用