<%@ WebHandler Language="C#" Class="WaterMark" %>
using System;
using System.Web;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Web.SessionState;
public class WaterMark : IHttpHandler, IRequiresSessionState // 要使用session必须实现该接口,记得要导入System.Web.SessionState命名空间
{
public void ProcessRequest(HttpContext context)
{
string checkCode = GenCode(5); // 产生5位随机字符
context.Session["Code"] = checkCode; //将字符串保存到Session中,以便需要时进行验证
System.Drawing.Bitmap image = new System.Drawing.Bitmap(70, 22);
Graphics g = Graphics.FromImage(image);
try
{
//生成随机生成器
Random random = new Random();
//清空图片背景色
g.Clear(Color.White);
// 画图片的背景噪音线
int i;
for (i = 0; i < 25; i++)
{
int x1 = random.Next(image.Width);
int x2 = random.Next(image.Width);
int y1 = random.Next(image.Height);
int y2 = random.Next(image.Height);
g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2);
}
Font font = new System.Drawing.Font("Arial", 12, (System.Drawing.FontStyle.Bold));
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);
g.DrawString(checkCode, font, brush, 2, 2);
//画图片的前景噪音点
g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1);
System.IO.MemoryStream ms = new System.IO.MemoryStream();
image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
context.Response.ClearContent();
context.Response.ContentType = "image/Gif";
context.Response.BinaryWrite(ms.ToArray());
}
finally
{
g.Dispose();
image.Dispose();
}
}
/// <summary>
/// 产生随机字符串
/// </summary>
/// <param name="num">随机出几个字符</param>
/// <returns>随机出的字符串</returns>
private string GenCode(int num)
{
string str = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";//"的一是在不了有和人这中大为上个国我以要他时来用们生到作地于出就分对成会可主发年动同工也能下过子说产种面而方后多定行学法所民得经十三之进着等部度家电力里如水化高自二理起小物现实加量都两体制机当使点从业本去把性好应开它合还因由其些然前外天政四日那社义事平形相全表间样与关各重新线内数正心反你明看原又么利比或但质气第向道命此变条只没结解问意建月公无系军很情者最立代想已通并提直题党程展五果料象员革位入常文总次品式活设及管特件长求老头基资边流路级少图山统接知较将组见计别她手角期根论运农指几九区强放决西被干做必战先回则任取据处队南给色光门即保治北造百规热领七海口东导器压志世金增争济阶油思术极交受联什认六共权收证改清己美再采转更单风切打白教速花带安场身车例真务具万每目至达走积示议声报斗完类八离华名确才科张信马节话米整空元况今集温传土许步群广石记需段研界拉林律叫且究观越织装影算低持音众书布复容儿须际商非验连断深难近矿千周委素技备半办青省列习响约支般史感劳便团往酸历市克何除消构府称太准精值号率族维划选标写存候毛亲快效斯院查江型眼王按格养易置派层片始却专状育厂京识适属圆包火住调满县局照参红细引听该铁价严";
char[] chastr = str.ToCharArray();
// 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", "#", "$", "%", "&", "@" };
string code = "";
Random rd = new Random();
int i;
for (i = 0; i < num; i++)
{
//code += source[rd.Next(0, source.Length)];
code += str.Substring(rd.Next(0, str.Length), 1);
}
return code;
}
public bool IsReusable
{
get
{
return false;
}
}
}
验证码:<a name="com"></a> <img src="handler/WaterMark.ashx" id="vimg" alt="" onclick="changeCode()"/>
//请单击图片后就会换验证码
<script language="javascript" type="text/javascript">
function changeCode() {
var imgNode = document.getElementById("vimg");
imgNode.src = "handler/WaterMark.ashx?t=" + (new Date()).valueOf(); // 这里加个时间的参数是为了防止浏览器缓存的问题
}
</script>
分享到:
相关推荐
这个程序能解决验证码的问题! 谁的电脑上显示不了验证码,解决验证码问题!用这个!
解决SP2验证码问题
dotnet点击刷新验证码问题 本人收藏了3年的资源 现放出 都是总结了很多系统 软件项目实施过程中的经验的 慢慢积累的
大众点评爬虫,已过css文字加密,未过访问导致验证码问题
在win系统上测试验证码正常,上传到liunx上验证码不正常后,需要的四个字体文件。解决验证码的不清楚的问题,
提供LoadRunner处理验证的几种方法,有兴趣的可以下载。一次上车,终身免费,朋友你还在等什么?
实现自动生成4位的验证码(有数字和字母构成)
基于12306订票助手开发,解决验证码问题,火狐专用版,每次自动对焦到验证码输入框,并输入完成后自动提交,无需点击提交按钮或是按回车键。 经验证,火狐9.0.1版本下,使用 greasemonkey-0.9.13-fx.xpi 无法成功...
本文档里面详细描述了利用Jmeter工具怎样处理登录验证码的方法和步骤
其实解决图片验证码的思路有很多,我这里主要结合QTP9.5的新特性给大家介绍其中一种解决方案,就是利用它的OCR机制抓取文本内容。
WEB验证解决WEB性能测试中的验证码问题软件测试现在越来越多的网站为了安全性或是防止Spam的侵害,采用了验证码的校验技术。简单地说,验证码就是在进行登录或是内容提交的时候,页面上会随机出现一个人工可识别,但...
python+selenium+chrome 自动化测试TPshop商城项目实战(二)——通过cookies绕过验证码
## 验证码问题求解思路 训练模型比较简单,我自己标记了100张图的标签,可以直接训练,也可以直接用我训练好的权重文件`best.pt`,训练了大概700次左右,感觉效果还是不错的,我认为比较麻烦的部分还是分析问题找出...
一、漏洞简介 二、漏洞影响 三、复现过程
关于Java验证码的总结,在网上找到的,然后给整理了的,希望对你们有用
验证码的全称为全自动区分计算机和人类的公开图灵测试。从其全称可以看出,验证码用于测试用户是否为真实人类。...本章将介绍如何自动化处理验证码问题,首先使用光学字符识别,然后使用一个验证码处理API。
下面小编就为大家带来一篇C#验证码问题的快速解决方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
解决 IE7 或 IE8 无法显示网页验证码问题的方法 IE7 和 IE8 是微软公司推出的两个浏览器版本,它们具有很高的使用频率和使用便捷度,然而,很多用户在使用这些浏览器时遇到了各种问题,其中之一就是无法显示网页...
在做网站的时候经常会遇到一些问题,比如乱码问题和验证码问题,在这里有几个封装好的,做网站经常用到的东西