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();
}
}
}
}
转载于:https://www.cnblogs.com/eleccomm2000/archive/2005/12/20/301124.html
asp.net页面的验证码代码相关推荐
- ASP .NET登录界面用户验证码代码
//ASP .NET用户登录界面经常用到验证码代码如下 private void Page_Load(object sender, System.EventArgs e) { // 在此处放 ...
- jquery调用asp.net 页面后台的实现代码
先创建一个aspx页面编写一个客户端控件<input type="button" id="AjaxDemo" value="AjaxDemo&q ...
- 【ASP.NET 进阶】验证码的实现
由于本人现在是做.NET的,负责的模块有需要验证码的功能,虽然用公司的模版简单的复制粘贴代码,就把功能搞定了,但是觉得还是自己动手了解下其功能实现,在网上找了半天没找到可靠的代码,只有ASP .NET ...
- asp.net 页面全生命周期
.Net 托管代码和非托管代码的区别 后台代码隐藏/显示前台控件 .Net 页面生命周期 2012-03-21 13:31:08| 分类: .NET | 标签:.net 页面生命周期 c# ...
- ASP.NET页面与IIS底层交互和工作原理详解(一)
第一回: 引言 我查阅过不少Asp.Net的书籍,发现大多数作者都是站在一个比较高的层次上讲解Asp.Net.他们耐心.细致地告诉你如何一步步拖放控件.设置控件属性.编写CodeBehind代码,以实 ...
- asp实现注册登录界面_(06)ASP登录页面的设计思路
一.登录面页的设计思路 登录页面有3个部分组成: 1. 用户名 2. 密码 3. 验证码 登录页面的显示是由下图所示的index.asp文件在服务器端执行后返顺到浏览器显示的.这个index.asp文 ...
- ASP.NET页面之间传递值的几种方式
页面传值是学习asp.net初期都会面临的一个问题,总的来说有页面传值.存储对象传值.ajax.类.model.表单等.但是一般来说,常用的较简单有QueryString,Session,Cookie ...
- HttpApplication事件ASP.NET页面周期
学习吧少年........................... 修改中........... 当一次请求到达IIS 1.http.sys将请求发送到指定的应用程序池. 2.应用程序池再将请求交给池中 ...
- [转]ASP.NET页面生命周期描述
ASP.NET页面生命周期描述 vigorID:Vigorcsdn 在以前写个一篇关于ASP.NET页面生命周期的草稿,最近又看了看ASP.NET,做个补充,看看页面初始过程到底是怎么样的 下面是AS ...
最新文章
- php 分页类使用,php 分页类
- 【微信小程序企业级开发教程】前台收集数据更新数据库表方法
- [问题记录] cl-api 在 CCL 中生成的文档无内容
- Linear Regression总结2
- cpp 一个文件分成两个文件写_为ORB-SLAM2写一个launch文件
- 新疆计算机一级考试试题手机软件,新疆维吾尔自治区计算机一级考试理论题库(最新最完整)...
- linux cmake编译安装mysql_Linux源码安装MySQL 5.6.12 (Cmake编译)
- python加入中小学课程_通知:中小学将新增一门课!对2008-2013年出生的孩子影响最大!...
- 解决Eclipse 项目报错:Unbound classpath container: ‘JRE System Library [JavaSE-1.7]
- 华为鸿蒙净水机,华为鸿蒙OS 2.0手机版功能抢先曝光
- ip68能达到什么程度防水_电子主控电路板使用什么样的胶水可以达到防水效果?...
- Beta版本测试第二天
- 计算机组成原理r型指令logisim实现_全国计算机二级MS office选择题增分速记宝典!...
- android消息通知布局,Android Design
- 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。...
- JAVA之JAR文件
- dsm加密linux,DSM 6.2.2最新引导修改版,支持3615xs,已更新下载链接
- UVALive - 5857 Captain Q's Treasure
- windows 安装apex_apex 安装/使用 记录
- 【STM32学习笔记】#001 前期准备
热门文章
- 查找重复文件_重复文件查找和磁盘整理工具:Tidy Up
- linux 挂载raid_linux初学者-磁盘阵列篇
- 密钥生成并配置_如何在 CentOS 8 上设置 SSH 密钥
- c语言写报告抽象数据类型,数据结构(C语言版)第一章 抽象数据类型的表示与实现...
- mui中子页面标志html,MUI 图标筛选切换(父页面传值子页面)代码
- java quartz CronScheduleBuilder
- PyPA Creating Documentation
- Python itertools chain
- Eclipse字符集环境配置
- Cobra命令行框架及使用