AJAX+图像验证码(一般处理程序)

建立一个空网站,在设计界面工具箱中拖入一个TextBox工具,一个按钮,外加一个Image图片工具(充当数字、字母以图片形式)。但是这样做出来的验证码会出现一个问题,每当点击一下按钮,界面自动提交一遍,重新刷新一遍再返回,为防止整个页面被重新提交,需要加入一个UpdatePanel,只刷新当前updatePanel内的内容即可。

必须要结合AJAX来使用

界面设计好后,需要添加一个以ashx结尾的文件项,在这里面写位图随机验证码的格式等等。

 1 <%@ WebHandler Language="C#" Class="Code" %>
 2
 3 using System;
 4 using System.Web;
 5 using System.Drawing;
 6 using System.Drawing.Drawing2D;
 7 using System.Drawing.Imaging;
 8 using System.Web.SessionState;
 9 //一般处理程序要使用session,必须要继承IRequiresSessionState接口(接口就是一个空的方法),session存在于这个接口中
10 public class Code : IHttpHandler,IRequiresSessionState {
11
12     public void ProcessRequest (HttpContext context) {
13         context.Response.ContentType = "image/jpeg";
14         Bitmap img = new Bitmap(50, 20);//位图,画了一个空白的图形
15         Graphics g = Graphics.FromImage(img);//
16
17         string s = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
18         string str = "";
19         Random rand = new Random();//初始化随机数
20         for (int i = 0; i < 4; i++)
21         {
22             int start = rand.Next(62); //生成一个随机的起始位置
23             str += s.Substring(start, 1).ToString();
24         }
25         context.Session["code"] = str;//session用于传值
26
27         Font font = new Font("宋体",12, FontStyle.Bold);//设置字体格式
28         SolidBrush brush = new SolidBrush(Color.White);
29         g.FillRectangle(brush, 0, 0, 50, 20);
30         brush.Color = Color.Red;
31         g.DrawString(str, font, brush, 0, 0);
32         img.Save(context.Response.OutputStream, ImageFormat.Jpeg);
33     }
34
35     public bool IsReusable {
36         get {
37             return false;
38         }
39     }
40
41 }

一般处理程序:有一个页面A,传递参数到一般处理程序,处理程序接收到参数,访问数据库,判断正确,跳转下一个页面,错误,跳转到另一个页面.

在aspx的Js源代码中,写function语句,确保传递参数

 1 <body>
 2     <form id="form1" runat="server">
 3     <div>
 4
 5
 6         <asp:ScriptManager ID="ScriptManager1" runat="server">
 7         </asp:ScriptManager>
 8
 9     </div>
10         <p>
11             &nbsp;</p>
12
13                 <asp:Image ID="Image1" runat="server" ImageUrl="~/Code.ashx" />
14
15                 <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
16                 <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
17                 <asp:Label ID="Label1" runat="server" Text="失败"></asp:Label>
18     </form>
19 </body>
20 </html>
21 <script>
22 //js方法
23     function changeimg()
24     {
25         var img = document.getElementById("Image1");
26         img.src = "Code.ashx?1=" + Math.random();//使用母版页之后,自己写的ID和JS生成的ID会不一样,需要手动更改ID(方法1)
27     }
28 </script>
29 //方法2:嵌生成之后的ID
30 <script>
31     function changeimg()
32     {
33         var img = document.getElementById("<%=Image1.ClientID%>"); //使用经<% %>转译之后ID
34         img.src = "Code.ashx?1=" + Math.random();
35     }
36 </script>

时间: 2024-10-07 22:54:54

AJAX+图像验证码(一般处理程序)的相关文章

利用开源程序(ImageMagick+tesseract-ocr)实现图像验证码识别

利用开源程序(ImageMagick+tesseract-ocr)实现图像验证码识别 分类: 开放项目2012-07-23 17:28 6712人阅读 评论(0) 收藏 举报 tiffimagecompression引擎pascalcharacter --------------------------------------------------低调的分割线--------------------------------------------------- Linux下有两个重要的编程准则

【识别码】使用(ImageMagick+tesseract-ocr)实现图像验证码识别实例

最近在搞一个无人值守系统时,需要能自动登录,在登录时需要输入验证码,所以研究了验证码识别技术,否则我这个无人值守系统的作用就没有了.目前只测试了字母和数字的识别,准确率还是可以的,呵呵,已经够我自已用了~~,至于中文的识别可以参考我上篇文章:利用开源程序(ImageMagick+tesseract-ocr)实现图像验证码识别. 验证码识别率如下图:(准确率还可以吧) 好吧,切入正题,赶快上架源码吧~~,不足之处请多多包涵 注意:在使用验证码识别类之前,一.请先安装好ImageMagick,二.需

asp.net Ajax Post 请求一般处理程序

其实很早就开通博客园了,一直想写些有价值的东西,供自己以后查阅的同时,也可以帮助别人遇到此类问题时能有一个好的解决方法.但是由于各种原因, 就没有实施我的想法.今天突然很想写下一篇文章,不知道我的第一篇文章应该写些什么,那我就写一个最近做的一个小程序的一个知识点吧. 今天主要写ajax post提交到一般处理程序,一般处理程序接收到数据如何解析和处理的.其实在网上也看到了一些例子,但是总是会有这样那样的问题.所以 我把代码贴出来,希望能帮助到大家. 先将js代码贴出来 1 <script typ

Ajax异步请求一般处理程序(List)返回Json数据

简单实现了通过jQuery的Ajax函数异步请求一般处理程序,数据由list模拟,返回json格式的数据. index.html: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <script src="js/jquery.min.js" type="text/javasc

.net Ajax与后台一般处理程序(ashx) 交互

本文主要实现无动态刷新查询后台数据功能,主要用到ajax+ashx+sqlserver进行交互. 首先需要引用Jquery: <script language="javascript" type="text/javascript" src="../js/jquery.js"> html脚本: <asp:TextBox ID="tb_corpName" runat="server" MaxL

jQuery Ajax请求 .net 一般处理程序

初学ajax 一个简单的功能,调试了2个小时,代码如下虽然成功了 但是有错误 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> <meta charset="utf-8" /> <

Ajax 调用(传值)一般处理程序(.ashx)

问题:在一般处理程序(.ashx)中累加[index='b']的值 难点:前台获取JSON值后台解析 解决: //#region 把index=b的值存在JSON对象中 function AjaxGetSum() { var arr = []; $("input[index='b']").each(function () { var arrObject = {}; var tempVal = $(this).val(); if (!$.gstr.isEmpty(tempVal)) {

015 图像验证码

这个功能现在几乎已经很少又用的了,但是这也是一个知识点,既然看见了就学习一下咯. 一:步骤 生成图形验证码的接口 在认证过程中加入图形验证码校验 重构代码 二:生成图片验证码接口 1. 根据随机数生成图片 将随机数存到session中 在将生成的图片写到接口的响应中 2.新建包 这段程序写到core中. 3.ImageCode.java 4.控制类 5.修改配置类 6.修改登录页index.html 添加图形验证码. 7.启动后的效果 8.如何添加到认证过滤链上 原文地址:https://www

验证码和图片上传和多张图片无刷新上传

先来验证码一般处理程序编写 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 6 namespace Blog.UI 7 { 8 using System.Drawing; 9 using Blog.Common; 10 /// <summary> 11 /// Vcode 的摘要说明 12 /// </summary> 13 public c