asp.net验证码
来源:互联网 发布:java简单用户管理系统 编辑:程序博客网 时间:2024/05/05 06:24
1.新建VerifyCode.aspx文件,asps文件中不写内容,在cs文件代码如下:
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Drawing;
using System.Drawing.Imaging;
using System.Drawing.Text;
public partial class VerifyCode : System.Web.UI.Page
{
static string[] FontItems = new string[] { "Arial", "Helvetica", "Geneva", "sans-serif", "Verdana" };
static Brush[] BrushItems = new Brush[] { Brushes.OliveDrab, Brushes.ForestGreen, Brushes.DarkCyan,
Brushes.LightSlateGray, Brushes.RoyalBlue, Brushes.SlateBlue, Brushes.DarkViolet, Brushes.MediumVioletRed,
Brushes.IndianRed, Brushes.Firebrick, Brushes.Chocolate, Brushes.Peru, Brushes.Goldenrod };
static string[] BrushName = new string[] { "OliveDrab", "ForestGreen", "DarkCyan", "LightSlateGray",
"RoyalBlue", "SlateBlue", "DarkViolet", "MediumVioletRed", "IndianRed", "Firebrick", "Chocolate", "Peru", "Goldenrod" };
private static Color BackColor = Color.White;
private static Pen BorderColor = Pens.DarkGray;
private static int Width = 52;
private static int Height = 21;
private Random _random;
private string _code;
private int _brushNameIndex;
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
//InitializeComponent();
//base.OnInit(e);
}
private void InitializeComponent()
{
//this.Load += new System.EventHandler(this.Page_Load);
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this._random = new Random();
this._code = GetRandomCode();
Session["code"] = this._code;
this.SetPageNoCache();
this.OnPaint();
}
}
private void SetPageNoCache()
{
Response.Buffer = true;
Response.ExpiresAbsolute = System.DateTime.Now.AddSeconds(-1);
Response.Expires = 0;
Response.CacheControl = "no-cache";
Response.AppendHeader("Pragma", "No-Cache");
}
private string GetRandomCode()
{
return Guid.NewGuid().ToString().Substring(0, 4);
}
private Font GetFont()
{
int fontIndex = _random.Next(0, FontItems.Length);
FontStyle fontStyle = GetFontStyle(_random.Next(0, 2));
return new Font(FontItems[fontIndex], 12, fontStyle);
}
private FontStyle GetFontStyle(int index)
{
switch (index)
{
case 0:
return FontStyle.Bold;
case 1:
return FontStyle.Italic;
default:
return FontStyle.Regular;
}
}
private Brush GetBrush()
{
int brushIndex = _random.Next(0, BrushItems.Length);
_brushNameIndex = brushIndex;
return BrushItems[brushIndex];
}
private void OnPaint()
{
Bitmap objBitmap = null;
Graphics g = null;
try
{
objBitmap = new Bitmap(Width, Height);
g = Graphics.FromImage(objBitmap);
Paint_Background(g);
Paint_Text(g);
Paint_TextStain(objBitmap);
Paint_Border(g);
objBitmap.Save(Response.OutputStream, ImageFormat.Gif);
Response.ContentType = "image/gif";
}
catch { }
finally
{
if (null != objBitmap)
objBitmap.Dispose();
if (null != g)
g.Dispose();
}
}
private void Paint_Background(Graphics g)
{
g.Clear(BackColor);
}
private void Paint_Border(Graphics g)
{
g.DrawRectangle(BorderColor, 0, 0, Width - 1, Height - 1);
}
private void Paint_Text(Graphics g)
{
g.DrawString(_code, GetFont(), GetBrush(), 3, 1);
}
private void Paint_TextStain(Bitmap b)
{
for (int n = 0; n < 30; n++)
{
int x = _random.Next(Width);
int y = _random.Next(Height);
b.SetPixel(x, y, Color.FromName(BrushName[_brushNameIndex]));
}
}
}
2.在页面中调用:
<img id="getcode" align="absmiddle" src="VerifyCode.aspx" alt="" />
3.后台判断:
if (Session["code"].ToString().Trim().Equals(this.TextBox3.Text))
{}
- 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 验证码
- 第十五章 就不能不换DB吗--抽象工厂模式(读书笔记)
- time to say sth
- My WorkFlow Trip
- POJ1004 Financial Management
- 王爽 汇编语言第二版 实验8 代码详细分析
- asp.net验证码
- Linux内核态抢占机制分析
- 关于spring集合对象的补充
- 2011-10-05 14:41:36 警告:ORA-00001: 违反唯一约束条件 (NC50.SYS_C005314)
- (进程间通信)IPC 信号(signal)基本函数实现的mysleep(unsined int)
- LeetCode: Set Matrix Zeroes
- 内核启动地址的确定
- json format
- 基础知识1