1 添加一个验证码类,类里面写一个创建随机字符的方法

1
namespace Message.BLL
{
/// <summary>
/// 验证码类
/// </summary>
public class Utils
{
private Utils()
{
}
/// <summary>
/// 生成5个随机数
/// </summary>
/// <returns>返回随机数字符串</returns>
public static string CreatStr()
{
string var = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
string newvar = "";
Random rd = new Random();
int i = 1;
while (i <= 5)
{
newvar += var[rd.Next(var.Length)];//每次获取1个字符,累加
i++;
}
return newvar;
}
}
}
2 创建一个验证码页面validate.aspx

2
using Message.BLL;
using System.Drawing;
using System.Drawing.Imaging;
public partial class validate : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string validate = Utils.CreatStr();
Session["validate"] = validate;
int width = 70;
int height = 20;
string fontcolor = "white";
string bgcolor = "black";
float fontsize = 12;
string font = "宋体";
Bitmap img = new Bitmap(width, height);//创建图片框架
Graphics g = Graphics.FromImage(img);//创建图片框架的画笔g,把控制权给g
g.DrawString(validate, new Font(font, fontsize), new SolidBrush(Color.FromName(fontcolor)), 10, 2);//用画笔g在框架里面面
img.Save(Response.OutputStream, ImageFormat.Jpeg);//保存图片,输出为网络流
}
}
3 前台引用该页面
<asp:TextBox id="txtvali" runat="server"></asp:TextBox><img src="validate.aspx"/>
4 前台判断验证码是否为空
<script language="javascript" type="text/javascript">
function judge()
{
if(document.getElementById("txtvali").value=="")
{
alert("验证码不能为空");
document.getElementById("txtvali").focus();
}
return;
}
</script>
5 后台OnClick()判断验证码

5
if (Session["validate"] == null)//防止网络超时造成的错误
{
MsgBox("验证码超时,请刷新");
txtvali.Focus();
return;
}
if (Session["validate"].ToString() != txtvali.Text.ToUpper())
{
MsgBox("验证码输入错误");
txtvali.Focus();
return;
}