asp.net写验证码
生成验证码与匹配验证码的服务端代码
<%@ 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写验证码相关推荐
- ASP也写邮箱注册机-sohu邮箱批量注册器-ASP高级编程交流
邮箱注册机这些东西很多,一般都是写成桌面应用程序的,很少有人写成web程序吧,至少我没见到过. 今天我就来写一个web版的示例,而且用这个貌似有点过时了的asp来写.web程序有个好处,就是外出时, ...
- 用Asp.net写自己的服务框架
用Asp.net写自己的服务框架 阅读目录 开始 理解Asp.net管线 HttpHandler HttpModule 关于Content-Encoding的解释 选 HttpHandler 还是 H ...
- 用JavaWeb写验证码
分析: 1.创建对象,在内存中存储 2.美化图片 3.将图片输出到页面上 package Study_Practice;import javax.im ...
- ASP程序调用验证码
调用方法<img src="getcode.asp"><input name="vcode" type="input"&g ...
- ASP生成BMP验证码图片
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%> <% '''''''''''''''''''''''''' ...
- 拆轮子系列之教你一步步写验证码控件
拆轮子系列之教你一步步写验证码控件 前言 先看看效果 怎么样不错吧?别急下面我就一步一步的教你实现. 用到的知识点总结: 1.Canvas和pint的使用,我们用它画点,线,字 2.View的基本用法 ...
- ASP如何开发验证码短信接口API
ASP对接验证码短信接口DEMO示例 本文为您提供了ASP版本的验证码短信接口对接DEMO示例 * 接口类型:触发短信接口,支持发送验证码短信.订单通知短信,节日祝福等. * 账户注册:请通过该地址 ...
- Asp.net 实现验证码功能的Web控件
Asp.net的设计方式和设计理念和其他的如Asp,Jsp,Php,Perl 等都不一样,几乎是完全的面向对象设计!代码的复用就是其 中差异较大的特点之一,Asp.net除了可以用Incl ...
- 完整asp.net图形验证码程序
1.测试页面:Default.aspx <%@ Page Language="C#" AutoEventWireup="true" CodeFile=& ...
最新文章
- excel中使用CORREL函数计算两个时间序列数据列之间的滚动相关性(Rolling correlations)、例如,计算两种商品销售额之间的3个月的滚动相关性
- 独家 | 一文读懂神经网络(附解读案例)
- C++知识点1——基础
- 05章项目:我的租房网
- copy时候明细消失没有了
- 牛客网题目——不用四则运算符号,计算两个数字的和
- spring入门:beans.xml不提示、别名、创建对象的三种方式
- APP审核关于3.2.1金融资格的审核回复苹果
- mongodb 笔记
- anaconda下载与spyder的报错解决
- 我和我的中山公园”摄影作品大赛投票通道即将开启,让你的才艺C位出道~
- WPF的介绍和XAML语言
- 概率中的独立与相关:相互独立、条件独立、协方差、相关系数
- 思考-ML如何产生效益,前景问题
- 35_Pandas计算满足特定条件的元素的数量
- oracle簇和簇表的创建,Oracle教程之管理表(七)--Oracle分区表及簇表的建立
- php学生管理系统视频教程,学生管理系统——PHP
- 关于论文目录,一级标题加粗,而后面的.....与页码不加粗的正确设置方法
- sitf+LK+pnp 识别、跟踪图片,并求三维旋转角度(四) -----LK光流跟踪
- HCIP datacom 821、831题库
热门文章
- iPhone 手机烧号的一些概念:五码烧号 vs OTA烧号
- 趋势科技修复已遭利用的 Apex Central 0day
- Let’s Encrypt 将在两天内撤销约200万份HTTPS 证书
- 我发现了 Microsoft Azure 中的两个漏洞
- 因被曝严重漏洞,Avast紧急禁用其 JavaScript 引擎
- Java日志组件间关系
- android四大组件小整
- CListCtrl行高问题最终解决方法
- flask get和post
- RHEL5.4 x86_64 GCC 4.1.2 升级到4.7.0版过程(含安装MPFR、GMP、MPC过程)