迎接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>

二、效果图

原创粉丝点击