Ajax动态刷新验证码图片
一》 原理:
把用代码生成的图片存放到硬盘当中,然后在返回存储路径把图片通过图片标签的 src 属性 自动加载到浏览器中
二》 步骤
1. 首先用GDI+ 绘图 把验证码图片给绘制出来
2. 然后提前判断硬盘里是否有已生成的图片,如果有,则删除,以避免节省硬盘空间
3. 把生成的验证码存放到 Session 会话当中,以供前台验证 填写验证码的准确性, 在构建文件路径,把验证码图片存入路径中
4. 想前台返回路径
三》 代码实例如下
Identifying.html 代码
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>验证码实验</title>
<script src="jquery-1.4.1.js"></script>
</head>
<body>
验证码:
<div>
<img src="" id="tp"/><a href="javascript:void(0)" id="huan">看不清换一张</a>
</div>
<script type="text/javascript">
$(function () {
function xx() {
$.ajax({
url: 'Identif.ashx',
type: 'POST',
datatype: 'text',
success: function (data) {
$("#tp").attr("src", data.toString());
}
});
};
xx();
$("#huan").click(xx);
});
</script>
</body>
</html>
Identif.ashx 代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.IO;
using System.Drawing;
using System.Web.SessionState; namespace FourmWeb.Identifying
{
/// <summary>
/// Identif 的摘要说明
/// </summary>
public class Identif : IHttpHandler,IRequiresSessionState
{ public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";//响应报文主体的类型 string path = context.Request.MapPath("~/"); ;
Bitmap map = new Bitmap(, ); //创建位图文件
Graphics g = Graphics.FromImage(map); //画布 //填充背景颜色
g.FillRectangle(Brushes.White, , , , ); //随机产生验证码
string code = null;
Random re = new Random(Guid.NewGuid().GetHashCode()); //用哈希数做随机种子
for(int i = ; i < ; i++)
{
if (re.Next(, ) % == )
{
code += re.Next(, ).ToString();
}
else
{
code+= (Char)re.Next(, );
}
} //删除已存在的文件
if (context.Session["code"] != null)
File.Delete(path + context.Session["code"].ToString() + ".jpg"); //构建文件路径
path += code + ".jpg"; context.Session["code"] = code; //将验证码画到画布上
g.DrawString(code, new Font("宋体", ), Brushes.Gray, new PointF(, ));
//绘制干扰点
Random random = new Random();
for (int i = ; i<; i++)
{
map.SetPixel(random.Next(, ), random.Next(, ), Color.LightGray);
} //输出图像
map.Save(path); //发送相对路径
context.Response.Write("../"+code+".jpg"); context.Response.End(); } public bool IsReusable
{
get
{
return false;
}
}
}
}
Ajax动态刷新验证码图片的更多相关文章
- Django(九)下:Ajax操作、图片验证码、KindEditor使用
三.Ajax操作 ajax操作基于浏览器的xmlHttpRequest对象,IE低版本是另外一个对象,jQuery 1 版本对那两个对象做了封装,兼容性最好,2 .3版本不再支持IE低版本了. Aja ...
- Servlet实现验证码图片(一)
Servlet实现数字字母验证码图片(一): 生成验证码图片主要用到了一个BufferedImage类,如下:
- SpringMVC生成的验证码图片不显示
近期用SSM框架写一个项目,登录模块需要生成验证码图片,我把相关的代码写好了之后传到 jsp ,但是图片不显示,查看控制台显示404,反复查询了一下代码并没有发现任何问题,代码如下: @Control ...
- Struts2 验证码图片实例
本文转载于DongLiYang的博客http://www.cnblogs.com/dongliyang/archive/2012/08/24/2654431.html 其中修改过一部分,针对使用注解而 ...
- java web学习总结(九) -------------------通过Servlet生成验证码图片
一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下:
- android 生成验证码图片
(转自:http://blog.csdn.net/onlyonecoder/article/details/8231373) package com.nobeg.util; import java.u ...
- delphi WebBrowser控件上网页验证码图片识别教程(一)
步骤一:获取网页中验证码图片的url地址 在delphi中加入一个BitBtn和一个memo以及WebBrowser控件实现网页中验证码图片的url地址的获取 程序如下:procedure TForm ...
- 学习笔记:利用GDI+生成简单的验证码图片
学习笔记:利用GDI+生成简单的验证码图片 /// <summary> /// 单击图片时切换图片 /// </summary> /// <param name=&quo ...
- JavaWeb---总结(九)通过Servlet生成验证码图片
一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下: 创建一个DrawImage Servlet,用来生成验证码图片 1 package gacl. ...
随机推荐
- RTC 之 ARM7 2136 ARM9之2410
RTC 的原理都是一样的,但计数过程中的计数换算却不相同: ARM9 直接出来的是BCD 码,也就是0x30 就是30秒,没有换算了,而ARM7则不同,他是直接计数的,十进制的30秒则是0x1E, ...
- D3js初探及数据可视化案例设计实战
摘要:本文以本人目前所做项目为基础,从设计的角度探讨数据可视化的设计的方法.过程和结果,起抛砖引玉之效.在技术方案上,我们采用通用web架构和d3js作为主要技术手段:考虑到项目需求,这里所做的可视化 ...
- 关于tcc、tlink的编译链接机制的研究
1.学习过程 在c:\下建立文件夹c,并将编译器tcc.exe.连接器tlink.exe.相关文件c0s.obj.cs.lib.emu.lib.maths.lib放入文件夹中. 要搭建一个简单的C语言 ...
- 禁用USB存储设备(不重启)
Title:禁用USB存储设备(不重启) -- 2012-09-13 12:08 在win2003实验,USB存储禁止,无需重启! stop usbrw.reg ------------------- ...
- 如何在Excel中启用宏?
OFFICE2003版本中启用宏的方法: 1.首先打开EXCEL应用程序. 2.点击上方的"工具"--"宏"--"安全性" 3.在" ...
- bzoj1827 [Sdoi2010]星际竞速
Description 10 年一度的银河系赛车大赛又要开始了.作为全银河最盛大的活动之一, 夺得这个项目的冠军无疑是很多人的梦想,来自杰森座 α星的悠悠也是其中之一. 赛车大赛的赛场由 N 颗行星和 ...
- 14条Yahoo(雅虎)十四条优化原则【转】
请大家都能好好学习,不要像我一样一扫而过,好好的记下来!不仅仅是晓得一些CSS xhtml就好了,深刻认识到很多的东西需要学习的.很早就用Firebug,但是却没听说过Yslow,这叫不喜欢追求.希望 ...
- HDU_2041——走楼梯,递推
Problem Description 有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法? Input 输入数据首先包含一个整数N,表示测试实例的个数,然 ...
- mnist数据集转换bmp图片
Mat格式mnist数据集下载地址:http://www.cs.nyu.edu/~roweis/data.html Matlab转换代码: load('mnist_all.mat'); type = ...
- DB2完美卸载
会安装,也要会卸载.详细的安装说明不多,我这个我觉得写得还算全. 准备工作. 1.用 ps -ef|grep db2 找出db2安装目录 2. ./db2level 查出DB2的 ...