新建一个页面VerifyCode.aspx
.cs中的代码:
using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Drawing; public partial class Default2 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Session["VerifyCode"] = MakeValidateCode(); CreateImage(Session["VerifyCode"].ToString()); } private void CreateImage(string checkCode) { int iwidth = (int)(checkCode.Length * 12) + 10; System.Drawing.Bitmap image = new System.Drawing.Bitmap(iwidth, 25); Graphics g = Graphics.FromImage(image); g.Clear(Color.White); //定义颜色 Color[] c = { Color.Black, Color.Red, Color.DarkBlue, Color.Green, Color.Orange, Color.Brown, Color.DarkCyan, Color.Purple }; //定义字体 string[] font = { "Verdana", "Microsoft Sans Serif", "Comic Sans MS", "Arial", "宋体" }; Random rand = new Random(); //随机输出噪点 for (int i = 0; i < 5; i++) { int x = rand.Next(image.Width); int y = rand.Next(image.Height); g.DrawRectangle(new Pen(Color.LightGray, 0), x, y, 1, 1); } //输出不同字体和颜色的验证码字符 for (int i = 0; i < checkCode.Length; i++) { int cindex = rand.Next(7); int findex = rand.Next(5); Font f = new System.Drawing.Font("宋体", 12, System.Drawing.FontStyle.Regular); Brush b = new System.Drawing.SolidBrush(c[cindex]); int ii = 4; if ((i + 1) % 2 == 0) { ii = 2; } g.DrawString(checkCode.Substring(i, 1), f, b, 3 + (i * 12), ii); } //画一个边框 g.DrawRectangle(new Pen(Color.Black, 0), 0, 0, image.Width - 1, image.Height - 1); //输出到浏览器 System.IO.MemoryStream ms = new System.IO.MemoryStream(); image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); Response.ClearContent(); Response.ContentType = "image/Jpeg"; Response.BinaryWrite(ms.ToArray()); g.Dispose(); image.Dispose(); } private string MakeValidateCode() { //0 i o char[] s = new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' }; string num = ""; Random r = new Random(); for (int i = 0; i < 4; i++) { num += s[r.Next(0, s.Length - 1)].ToString(); } return num; } }
调用页面:
.aspx代码:
<script type="text/javascript"> // JScript 文件 //刷新显示图片 function setVerifyCode(){ var nameListDiv = document.getElementById("verifyPic"); nameListDiv.src = "VerifyCode.aspx?SID=" + Math.random(); } //加载的时候显示验证码 window.onload = function(){ setVerifyCode(); } </script> 验 证 码: <td style="text-align:center; height: 28px;" align="center"> <asp:TextBox ID="TextBox1" runat="server" Width="70px"></asp:TextBox><img src="" alt="点击更换..." width="80" height="23" id="verifyPic" onclick="setVerifyCode();" style="position: relative; top: 5px" /></td>
.cs中代码:
if (Session["VerifyCode"] != null) { if (this.TextBox1.Text.ToUpper() != Session["VerifyCode"].ToString().ToUpper()) { Response.Write(CC.MessageBox("验证码输入有误,请重新输入!", "Default.aspx")); } else { //调用CommonClass类中的checkLogin方法,判断用户是否为合法用户 int IntUserIn = CC.checkuser(this.Tusername.Text.Trim(), CC.MD5(this.Tuserpwd.Text.Trim())); if (IntUserIn > 0) { Session["UserName"] = this.Tusername.Text.Trim().ToUpper(); Response.Write(CC.MessageBox("登录成功!", "Admin/Menu.aspx?admin=" + this.Tusername.Text.Trim() + "")); } else { //该用户不是合法用户,调用CommonClass类中的MassageBox方法,弹出提示框 Response.Write(CC.MessageBox("您输入的用户名或密码错误,请重新输入!", "Default.aspx")); } } } else { Response.Write(CC.MessageBox("验证码不能为空!", "Default.aspx")); }