迎接2012之验证码的实现
来源:互联网 发布:网店推广及优化 编辑:程序博客网 时间:2024/06/05 14:48
一、页面
(1)VerificationCode.ashx
<%@ WebHandler Language="C#" Class="VerificationCode" %>using System;using System.Web;public class VerificationCode : IHttpHandler, System.Web.SessionState.IRequiresSessionState{ public void ProcessRequest (HttpContext context) { context.Response.ContentType = "image/jpeg"; System.Collections.Generic.Dictionary<int, string> code = new System.Collections.Generic.Dictionary<int, string>(); { for (int i = 0; i < 26; i++) { if (i < 10) { code.Add(i, i.ToString()); } code.Add(i + 10, ((char)(65 + i)).ToString()); code.Add(i + 36, ((char)(97 + i)).ToString()); } using (System.Drawing.Image img = new System.Drawing.Bitmap(60, 25)) { using (System.Drawing.Graphics grap = System.Drawing.Graphics.FromImage(img)) { grap.Clear(System.Drawing.Color.White); grap.DrawRectangle(System.Drawing.Pens.Red, new System.Drawing.Rectangle(0, 0, 59, 24)); string strnum = string.Empty; Random ra = new Random(); for (int i = 0; i < 4; i++) { strnum += code[ra.Next(0, 62)]; grap.DrawString(code[ra.Next(0, 62)], new System.Drawing.Font("宋体", 12), System.Drawing.Brushes.Black, new System.Drawing.PointF((i) * 15, 5)); } context.Session["code"] = strnum; //img.Save(context.Server.MapPath("~") + "//" + DateTime.Now.ToString("yyyyMMddHHmmssms") + ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg);输出图片到本地 img.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg); } } } context.Response.Write(context.Session["code"].ToString()); } public bool IsReusable { get { return false; } }}
(2)Default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="Default" %><!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> <script type="text/javascript" src="JQueryUi/js/jquery-1.6.2.min.js"></script> <script type="text/javascript"> $(document).ready(function () { $("#code").css("cursor", "pointer"); $("#code").click(function () { $("#code").attr("src", "VerificationCode.ashx?t=" + function () { var dt = new Date(); var dts = dt.getYear().toString() + dt.getMonth().toString() + dt.getDay().toString() + dt.getHours().toString() + dt.getMinutes().toString() + dt.getSeconds().toString() + dt.getMilliseconds().toString(); return dts; } ()); }); }); </script> <title></title></head><body> <div> <img id="code" src="VerificationCode.ashx" alt="不清楚,请点击" /> </div></body></html>
二、效果图
- 迎接2012之验证码的实现
- 迎接2012之图片水印的实现
- 迎接2012之网站防盗链的实现
- 迎接2012之类的内存释放实现
- 迎接2012之JavaScript所谓的“重载”
- 迎接2012之集合和泛型(1)------线性表的顺序结构基本实现
- 迎接2012之集合和泛型(2)------线性表的链式结构基本实现
- 迎接2012之集合和泛型(3)------栈的顺序结构基本实现
- 迎接2012之集合和泛型(4)------栈的链式结构基本实现
- 迎接2012之集合和泛型(5)------队列的顺序结构基本实现
- 迎接2012之集合和泛型(6)------队列的链式结构基本实现
- 迎接2012之字符串格式化
- 迎接2012之Ajax删除
- 迎接2012之Ajax分页
- 迎接2012之Url重写
- 迎接2012之基于JQuery Ui Dialog实现Ajax提交表单
- 迎接2012之三层架构基于JQuery Ui实现增删改查完整设计
- 迎接2012之文件流和目录
- ARM DUI 读书笔记引用
- Linux系统下三种配置环境变量的方法
- Apache支持ASP.Net+ASP+JSP
- Android学习——数据存储
- base64的说明和实现----网上觉得说的最综合的一篇
- 迎接2012之验证码的实现
- linux下连接动态库
- linux驱动开发
- 如何用VS2008打包发布含Oracle数据库客户端的程序
- 用C#编写Windows服务
- 联想昭阳E46A笔记本的一个问题
- 性能测试方法总结
- .net 我们应该更专业
- Maven常用库