生成验证码与匹配验证码的服务端代码

<%@ WebHandler Language="C#" Class="ValidataeCodeHandler" %>using System;
using System.Web;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.IO;
using System.Drawing.Imaging;public class ValidataeCodeHandler : IHttpHandler, System.Web.SessionState.IRequiresSessionState
{public void ProcessRequest(HttpContext context){//请求类型:获取验证码图片,匹配验证码string type = context.Request["type"];if (type == "math"){if (string.IsNullOrEmpty(context.Request["code"]))context.Response.Write(2);else if (string.IsNullOrEmpty("" + context.Session["yqcode" + context.Request["id"]])){context.Response.Write(3);}else{if ("" + context.Session["yqcode" + context.Request["id"]] == context.Request["code"] + "")context.Response.Write(1);elsecontext.Response.Write(0);}}else{context.Response.ContentType = "image/gif";string validateCode = CreateValidateCode(context);//生成验证码 Bitmap bitmap = new Bitmap(imgWidth, imgHeight);//生成Bitmap图像 DisturbBitmap(bitmap); //图像背景 DrewValidateCode(bitmap, validateCode);//绘制验证码图像 bitmap.Save(context.Response.OutputStream, ImageFormat.Gif);//保存图像,等待输出
context.Response.Write(bitmap);}}//  private int codeLen = 4;//验证码长度 private int fineness = 85;//图片清晰度 private int imgWidth = 48;//图片宽度 private int imgHeight = 24;//图片高度 private string fontFamily = "Times New Roman";//字体名称 private int fontSize = 14;//字体大小 //private int fontStyle = 0;//字体样式 private int posX = 0;//绘制起始坐标X private int posY = 0;//绘制坐标Y private string CreateValidateCode(HttpContext context) //生成验证码
    {string validateCode = "";Random random = new Random();// 随机数对象 validateCode = random.Next(1000, 9999) + "";//for (int i = 0; i < codeLen; i++)//循环生成每位数值 //{//    int n = random.Next(10);//数字 //    validateCode += n.ToString();//}context.Session["yqcode" + context.Request["id"]] = validateCode;//保存验证码 这Session是在前台调用的。return validateCode;// 返回验证码
    }private void DisturbBitmap(Bitmap bitmap)//图像背景
    {Random random = new Random();//通过随机数生成 for (int i = 0; i < bitmap.Width; i++)//通过循环嵌套,逐个像素点生成
        {for (int j = 0; j < bitmap.Height; j++){if (random.Next(90) <= this.fineness)bitmap.SetPixel(i, j, Color.LightGray);}}}private void DrewValidateCode(Bitmap bitmap, string validateCode)//绘制验证码图像
    {Graphics g = Graphics.FromImage(bitmap);//获取绘制器对象 Font font = new Font(fontFamily, fontSize, FontStyle.Bold);//设置绘制字体 g.DrawString(validateCode, font, Brushes.Black, posX, posY);//绘制验证码图像
    }public bool IsReusable{get{return false;}}}

View Code

手动刷新验证码

<script type="text/javascript">//点击刷新验证码function f_refreshtype() {var Image1 = document.getElementById("valiCode");if (Image1 != null) {Image1.src = Image1.src + "?";}}</script>

提交表单前ajax同步验证验证码是否正确

var urlCode = '/Handler/ValidataeCodeHandler.ashx?id=12&type=math&code=' + $.trim($("#yzcode").val());//ajax同步请求var mathresult = $.ajax({ type: "GET", url: urlCode, async: false }).responseText;if (mathresult != 1) {var Image1 = document.getElementById("valiCode");if (Image1 != null) {Image1.src = Image1.src + "?";}alert("验证码不匹配!");return false; }  

<div class="line"><span>验证码:</span><input value="" type="text" name="yzcode" id="yzcode" class="tong" /><em><img id="valiCode" name="valiCode" onclick="f_refreshtype();" style="height:32px;" src="/Handler/ValidataeCodeHandler.ashx?id=12"/></em>
</div>    

转载于:https://www.cnblogs.com/yonsy/p/4872055.html

asp.net写验证码相关推荐

  1. ASP也写邮箱注册机-sohu邮箱批量注册器-ASP高级编程交流

    邮箱注册机这些东西很多,一般都是写成桌面应用程序的,很少有人写成web程序吧,至少我没见到过. 今天我就来写一个web版的示例,而且用这个貌似有点过时了的asp来写.web程序有个好处,就是外出时, ...

  2. 用Asp.net写自己的服务框架

    用Asp.net写自己的服务框架 阅读目录 开始 理解Asp.net管线 HttpHandler HttpModule 关于Content-Encoding的解释 选 HttpHandler 还是 H ...

  3. 用JavaWeb写验证码

     分析:         1.创建对象,在内存中存储         2.美化图片         3.将图片输出到页面上 package Study_Practice;import javax.im ...

  4. ASP程序调用验证码

    调用方法<img src="getcode.asp"><input name="vcode" type="input"&g ...

  5. ASP生成BMP验证码图片

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%> <% '''''''''''''''''''''''''' ...

  6. 拆轮子系列之教你一步步写验证码控件

    拆轮子系列之教你一步步写验证码控件 前言 先看看效果 怎么样不错吧?别急下面我就一步一步的教你实现. 用到的知识点总结: 1.Canvas和pint的使用,我们用它画点,线,字 2.View的基本用法 ...

  7. ASP如何开发验证码短信接口API

    ASP对接验证码短信接口DEMO示例 本文为您提供了ASP版本的验证码短信接口对接DEMO示例 * 接口类型:触发短信接口,支持发送验证码短信.订单通知短信,节日祝福等.  * 账户注册:请通过该地址 ...

  8. Asp.net 实现验证码功能的Web控件

          Asp.net的设计方式和设计理念和其他的如Asp,Jsp,Php,Perl 等都不一样,几乎是完全的面向对象设计!代码的复用就是其 中差异较大的特点之一,Asp.net除了可以用Incl ...

  9. 完整asp.net图形验证码程序

    1.测试页面:Default.aspx <%@ Page Language="C#" AutoEventWireup="true"  CodeFile=& ...

最新文章

  1. excel中使用CORREL函数计算两个时间序列数据列之间的滚动相关性(Rolling correlations)、例如,计算两种商品销售额之间的3个月的滚动相关性
  2. 独家 | 一文读懂神经网络(附解读案例)
  3. C++知识点1——基础
  4. 05章项目:我的租房网
  5. copy时候明细消失没有了
  6. 牛客网题目——不用四则运算符号,计算两个数字的和
  7. spring入门:beans.xml不提示、别名、创建对象的三种方式
  8. APP审核关于3.2.1金融资格的审核回复苹果
  9. mongodb 笔记
  10. anaconda下载与spyder的报错解决
  11. 我和我的中山公园”摄影作品大赛投票通道即将开启,让你的才艺C位出道~
  12. WPF的介绍和XAML语言
  13. 概率中的独立与相关:相互独立、条件独立、协方差、相关系数
  14. 思考-ML如何产生效益,前景问题
  15. 35_Pandas计算满足特定条件的元素的数量
  16. oracle簇和簇表的创建,Oracle教程之管理表(七)--Oracle分区表及簇表的建立
  17. php学生管理系统视频教程,学生管理系统——PHP
  18. 关于论文目录,一级标题加粗,而后面的.....与页码不加粗的正确设置方法
  19. sitf+LK+pnp 识别、跟踪图片,并求三维旋转角度(四) -----LK光流跟踪
  20. HCIP datacom 821、831题库

热门文章

  1. iPhone 手机烧号的一些概念:五码烧号 vs OTA烧号
  2. 趋势科技修复已遭利用的 Apex Central 0day
  3. Let’s Encrypt 将在两天内撤销约200万份HTTPS 证书
  4. 我发现了 Microsoft Azure 中的两个漏洞
  5. 因被曝严重漏洞,Avast紧急禁用其 JavaScript 引擎
  6. Java日志组件间关系
  7. android四大组件小整
  8. CListCtrl行高问题最终解决方法
  9. flask get和post
  10. RHEL5.4 x86_64 GCC 4.1.2 升级到4.7.0版过程(含安装MPFR、GMP、MPC过程)