zoukankan      html  css  js  c++  java
  • .NET使用一般处理程序生成验证码

    HTML 代码:

     1 ASP.NET用一般处理程序生成验证码 
    2
    3 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    4 <html>
    5 <head>
    6 <title></title>
    7 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    8 <script type="text/javascript">
    9 function change() {
    10 var imgNode = document.getElementById("vimg");
    11 imgNode.src = "WaterMark.ashx?t=" + (new Date()).valueOf(); // 这里加个时间的参数是为了防止浏览器缓存的问题
    12 }
    13 </script>
    14 </head>
    15 <body>
    16 <img src="WaterMark.ashx" id="vimg" alt="" /><input type="button" value="换一张图片" onclick="change()" />
    17 </body>
    18 </html>

    一般处理程序WaterMark.ashx的代码:

     1 <%@ WebHandler Language="C#" Class="WaterMark" %>   
    2
    3 using System;
    4 using System.Web;
    5 using System.Drawing;
    6 using System.Drawing.Drawing2D;
    7 using System.Web.SessionState;
    8
    9 public class WaterMark : IHttpHandler, IRequiresSessionState // 要使用session必须实现该接口,记得要导入System.Web.SessionState命名空间
    10 {
    11
    12 public void ProcessRequest(HttpContext context)
    13 {
    14 string checkCode = GenCode(5); // 产生5位随机字符
    15 context.Session["Code"] = checkCode; //将字符串保存到Session中,以便需要时进行验证
    16 System.Drawing.Bitmap image = new System.Drawing.Bitmap(70, 22);
    17 Graphics g = Graphics.FromImage(image);
    18 try
    19 {
    20 //生成随机生成器
    21 Random random = new Random();
    22
    23 //清空图片背景色
    24 g.Clear(Color.White);
    25
    26 // 画图片的背景噪音线
    27 int i;
    28 for (i = 0; i < 25; i++)
    29 {
    30 int x1 = random.Next(image.Width);
    31 int x2 = random.Next(image.Width);
    32 int y1 = random.Next(image.Height);
    33 int y2 = random.Next(image.Height);
    34 g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2);
    35 }
    36
    37 Font font = new System.Drawing.Font("Arial", 12, (System.Drawing.FontStyle.Bold));
    38 System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2F, true);
    39 g.DrawString(checkCode, font, brush, 2, 2);
    40
    41 //画图片的前景噪音点
    42 g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1);
    43 System.IO.MemoryStream ms = new System.IO.MemoryStream();
    44 image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
    45 context.Response.ClearContent();
    46 context.Response.ContentType = "image/Gif";
    47 context.Response.BinaryWrite(ms.ToArray());
    48 }
    49 finally
    50 {
    51 g.Dispose();
    52 image.Dispose();
    53 }
    54 }
    55
    56 /// <summary>
    57 /// 产生随机字符串
    58 /// </summary>
    59 /// <param name="num">随机出几个字符</param>
    60 /// <returns>随机出的字符串</returns>
    61 private string GenCode(int num)
    62 {
    63 string str = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    64 char[] chastr = str.ToCharArray();
    65 // string[] source ={ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "#", "$", "%", "&", "@" };
    66 string code = "";
    67 Random rd = new Random();
    68 int i;
    69 for (i = 0; i < num; i++)
    70 {
    71 //code += source[rd.Next(0, source.Length)];
    72 code += str.Substring(rd.Next(0, str.Length), 1);
    73 }
    74 return code;
    75
    76 }
    77
    78 public bool IsReusable
    79 {
    80 get
    81 {
    82 return false;
    83 }
    84 }
    85
    86 }
  • 相关阅读:
    再次尝试windows下msys+MinGW编译ffmpeg
    iOS设备的硬件适配 (关于armv6, armv7, armv7s ) <转>
    vmware虚拟机下ubuntu 13.04使用zeranoe脚本交叉编译ffmpeg
    vmware 8下ubuntu 13.04安装vmware tools
    ubuntu下使用脚本交叉编译windows下使用的ffmpeg + X264
    网上看来的
    ffmpeg关于aac解码
    iOS阶段学习第15天笔记(NSDate操作)
    iOS阶段学习第15天笔记(NSDictionary与NSMutableDictionary 字典)
    iOS阶段学习第15天笔记(NSArray与NSMutableArray 数组)
  • 原文地址:https://www.cnblogs.com/tofight/p/2413294.html
Copyright © 2011-2022 走看看