asp.net 验证码
来源:互联网 发布:zbrush 4r8 mac 破解 编辑:程序博客网 时间:2024/06/05 04:21
验证码用于登陆时防暴力破解的一种方法,用的还比较广,至于我为什么写这个,主要是因为我刚学了C#的GDI+,根据一些网上的参考,程序运行OK.
代码如下:
首先建一个一般处理程序;
<%@ WebHandler Language="C#" Class="generateimage" %>
using System;
using System.Web;
using System.Drawing;
using System.Drawing.Imaging;
public class generateimage : IHttpHandler,System.Web.SessionState.IRequiresSessionState {//这里要说明一下 必须加IRequiresSessionState接口 此接口没方法,在这里作一个标志
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "image/gif";
//新建一个位图,宽200、高60
using (Bitmap b = new Bitmap(120, 30))
{
using (Graphics g = Graphics.FromImage(b))
{
//有一个随机数,更换三种背景颜色
//Brushes.Aqua,Brushes.Beige,Brushes.Coral
Random ran = new Random();
int i = ran.Next(1, 3);
if (i == 1)
{
g.FillRectangle(Brushes.Coral, 0, 0, 120, 30);
}
else if (i == 2)
{
g.FillRectangle(Brushes.Aqua, 0, 0, 120, 30);
}
else if (i == 3)
{
g.FillRectangle(Brushes.Beige, 0, 0, 120, 30);
}
//合法字符串
string strLetters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
System.Text.StringBuilder str = new System.Text.StringBuilder();
//定义字体
Font font = new Font(FontFamily.GenericSerif, 16, FontStyle.Bold);//当你改图片大小时 改一下字号
for (i = 0; i < 5; i++)
{
str.Append(strLetters.Substring(ran.Next(0, strLetters.Length - 1), 1));
//画字符串
g.DrawString(str[i].ToString(), font, Brushes.Green, i * 18 + 12, ran.Next(1, 10));//当你改图片大小时 要改一下 这里 关于文字大小和间距
}
//生成干扰线条 此干扰线条 可要可不要
//Pen pen = new Pen(new SolidBrush(Color.Blue), 2);
//for (i = 0; i < 10; i++)
//{
// g.DrawLine(pen, new Point(ran.Next(0, 119), ran.Next(0, 29)), new Point(ran.Next(0, 119), ran.Next(0, 29)));
//}
//位图保存到输出流中
b.Save(context.Response.OutputStream, ImageFormat.Gif);
//session赋初值
context.Session.Add("identity", "abc");
//保存session
context.Session["identity"] = str.ToString().ToLower();
}
}
}
public bool IsReusable
{
get
{
return false;
}
}
}
调用代码:
输入验证码:<img src="generateimage.ashx" alt="看不清楚,换一张" id="imgcheck" onclick="this.src='generateimage.ashx?'+Math.random()" style="height:25px;width:120px;border:2px solid #fff;" />
后台验证
protected void Button1_Click(object sender, EventArgs e)
{
if (Session["identity"].ToString().ToLower() == TextBox1.Text.ToLower())
{
Response.Write("<script type="+"'text/javascript'"+">alert('验证码正确')</script>");
}
}
代码完成。
- Asp.net验证码
- ASP.net 验证码
- ASP.NET验证码
- Asp.net验证码
- Asp.net验证码
- asp.net验证码
- asp.net 验证码
- ASP.NET 验证码
- asp.net验证码
- ASP.NET 验证码
- asp.net验证码
- asp.net验证码
- Asp.net验证码
- asp.net 验证码
- ASP.NET验证码
- Asp.net验证码
- ASP.Net 验证码
- asp.net 验证码
- 关注到谷歌的政策性改动了,记录~
- 软件开发人员的“七重苦”(1)
- 前端学习笔记入门篇----视觉稿
- 软件开发人员的“七重苦”(2)
- HTML编码
- asp.net 验证码
- 为什么程序员的社会地位不高?
- 设计模式-OOD的设计原则(1)-"开-闭原则"
- linux awk 内置函数详细介绍(实例)
- 设计模式-OOD的设计原则(2)-"里氏代换原则"
- AIX系统日志学习笔记之一
- 遍历json获得数据的几种方法
- POJ 2081 Recaman's Sequence(我的水题之路——空间换时间)
- CTEX生成中文PDF的问题