PHP   发布时间:2019-11-21  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了asp.net 验证码生成和刷新及验证大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
验证码技术是为了防止暴力破解等而设定的。现在一般的网站注册等都提供验证码功能,特别是腾讯更是长长的一串。文中参了别人的代码。有了就没有必要再写了。可以读一下。不过我测试时发现了两次PageLoad的问题。注释了两句即可。同时修改了namespaces。同时提供完整的验证说明:
1 新建VerifyCode.aspx
cs文件代码如下:
复制代码 代码如下:

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Drawing;
using System.Drawing.Imaging;
using System.Drawing.Text;
/**///// <sumMary>
/// 页面验证码程序
/// 使用:在页面中加入HTML代码 <img src="VerifyCode.aspx">
/// </sumMary>
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);
}
/**//**//**//// <sumMary>
/// required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </sumMary>
private void InitializeComponent()
...{
//this.Load += new System.EventHandler(this.Page_Load);
}
/**//// <sumMary>
///
/// </sumMary>
/// <param name="sender"></param>
/// <param name="e"></param>
public void Page_Load(object sender,System.EventArgs E)
...{
if (!IsPostBACk)
...{
//
// TODO : initialize
//
this._random = new Random();
this._code = GetRandomCode();
//
// TODO : use Session["code"] save the VerifyCode
//
Session["code"] = this._code;
//
// TODO : output Image
//
this.SetPageNoCache();
this.OnPaint();
}
}
/**//**//**//// <sumMary>
/// 设置页面不被缓存
/// </sumMary>
private void SetPageNoCache()
...{
Response.buffer = true;
Response.ExpiresAbsolute = System.datetiR_146_11845@e.Now.AddSeconds(-1);
Response.Expires = 0;
Response.Cachecontrol = "no-cache";
Response.AppendHeader("Pragma","No-Cache");
}
/**//**//**//// <sumMary>
/// 取得一个 4 位的随机码
/// </sumMary>
/// <returns></returns>
private String GetRandomCode()
...{
return Guid.NewGuid().ToString().SubString(0,4);
}
/**//**//**//// <sumMary>
/// 随机取一个字体
/// </sumMary>
/// <returns></returns>
private Font GetFont()
...{
int fonTindex = _random.Next(0,FontItems.Length);
FontStyle fontStyle = GetFontStyle(_random.Next(0,2));
return new Font(FontItems[fonTindex],12,fontStylE);
}
/**//**//**//// <sumMary>
/// 取一个字体的样式
/// </sumMary>
/// <param name="index"></param>
/// <returns></returns>
private FontStyle GetFontStyle(int indeX)
...{
switch (indeX)
...{
case 0:
return FontStyle.bold;
case 1:
return FontStyle.Italic;
default:
return FontStyle.Regular;
}
}
/**//**//**//// <sumMary>
/// 随机取一个笔刷
/// </sumMary>
/// <returns></returns>
private Brush GetBrush()
...{
int brushIndex = _random.Next(0,BrushItems.Length);
_brushNameIndex = brushIndex;
return BrushItems[brushIndex];
}
/**//**//**//// <sumMary>
/// 绘画事件
/// </sumMary>
private void OnPaint()
...{
Bitmap objBitmap = null;
Graphics g = null;
try
...{
objBitmap = new Bitmap(Width,Height);
g = Graphics.FromImage(objBitmap);
PainT_Backg@R_607_7060@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();
}
}
/**//**//**//// <sumMary>
/// 绘画背景颜色
/// </sumMary>
/// <param name="g"></param>
private void PainT_Backg@R_607_7060@Graphics g)
...{
g.Clear(BACkColor);
}
/**//**//**//// <sumMary>
/// 绘画边框
/// </sumMary>
/// <param name="g"></param>
private void PainT_Border(Graphics g)
...{
g.DrawRectangle(BorderColor,Width - 1,Height - 1);
}
/**//**//**//// <sumMary>
/// 绘画文字
/// </sumMary>
/// <param name="g"></param>
private void Paint_Text(Graphics g)
...{
g.DrawString(_code,GetFont(),GetBrush(),3,1);
}
/**//**//**//// <sumMary>
/// 绘画文字噪音点
/// </sumMary>
/// <param name="g"></param>
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 页面引用:
<asp:Image ID="getcode" src="VerifyCode.aspx" runat="server" />
一般需要同时提供刷新功能(看不清楚换一张),代码如下
<asp:Image ID="getcode" src="VerifyCode.aspx" runat="server" />  <A href="javascript:getimgcode()">刷新验证码</A>
如使用了母版页,则用如下代码:
<img ID="getcode" alt="" src="VerifyCode.aspx" /> <%--<asp:Image ID="getcode" src="VerifyCode.aspx" runat="server" />--%>
  <A href="javascript:getimgcode()">刷新验证码</A>
超链接对应的javascript如下:
<script language="javascript" type="text/javascript">
function getimgcode()
{
var getimagecode = document.getElementById("getcode");
getimagecode.src = "VerifyCode.aspx";
}
</script>
3 判断验证
上述代码是将验证码存贮在Session中,用code来标志。读取代码Session["code"].ToString();
使用中,我们只需要比较Session["code"].ToString()和文本框输入的串(TextBoxCode.Text)是否相同即可进行判断。
if(Session["code"].ToString().Trim().Equals(TextBoxCode.Text.Trim()))
...{
Response.Write("success");
}
测试通过! 

大佬总结

以上是大佬教程为你收集整理的asp.net 验证码生成和刷新及验证全部内容,希望文章能够帮你解决asp.net 验证码生成和刷新及验证所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。