X+Y=? 这种验证码的实现

入正题 上代码

一般处理程序来实现验证码

<%@ WebHandler Language="C#" Class="Handler" %>

using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.Text;
using System.Web;
using System.Web.SessionState;
public class Handler : IHttpHandler, IRequiresSessionState
{

    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "image/gif";
        //建立Bitmap对象,绘图
        Bitmap basemap = new Bitmap(200, 60);
        Graphics graph = Graphics.FromImage(basemap);
        graph.FillRectangle(new SolidBrush(Color.White), 0, 0, 200, 60);
        Font font = new Font(FontFamily.GenericSerif, 48, FontStyle.Bold, GraphicsUnit.Pixel);
        Random r = new Random();
        string letters = "1234567890";
        string letter;
        StringBuilder s = new StringBuilder();
        string[] arrays = new string[2];
        //添加随机的2个数字
        for (int x = 0; x < 2; x++)
            arrays[x] = letters.Substring(r.Next(0, letters.Length - 1), 1);

        graph.DrawString(arrays[0] + "+" + arrays[1] + "= ?", font, new SolidBrush(Color.Black), 38, r.Next(0, 15));
        //混淆背景
        Pen linePen = new Pen(new SolidBrush(Color.Black), 2);
        for (int x = 0; x < 3; x++)
            graph.DrawLine(linePen, new Point(r.Next(0, 199), r.Next(0, 59)), new Point(r.Next(0, 199), r.Next(0, 59)));

        //将图片保存到输出流中       
        basemap.Save(context.Response.OutputStream, ImageFormat.Gif);
        context.Session["CheckCode"] = Convert.ToInt32(arrays[0]) + Convert.ToInt32(arrays[1]);
        context.Response.End();
    }

    public bool IsReusable
    {
        get
        {
            return false;
        }
    }

}

  前台显示代码

<%@ 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 runat="server">
    <title>无标题页</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <img  src="Handler.ashx" alt="验证码" style="height: 19px; width: 68px"/> 
    </div>
    </form>
</body>
</html>

就这样的 图片是我放大了 所以看着不清晰 

posted @ 2012-11-04 20:45  Ganler1988  阅读(291)  评论(0编辑  收藏  举报