ASP.NET实现验证码以及刷新验证码的小例子
Jan 13, 2017 pm 02:27 PM实现代码
/// <summary> /// 生成验证码图片,保存session名称VerificationCode /// </summary> public static void CreateVerificationCode() { int number; string checkCode = string.Empty; //随机数种子 Random randoms = new Random(); for (int i = 0; i < 4; i++) //校验码长度为4 { //随机的整数 number = randoms.Next(); //字符从0-9,A-Z中随机产生,对应的ASCII码分别为 //48-57,65-90 number = number % 36; if (number < 10) { number += 48; } else { number += 55; } checkCode += ((char)number).ToString(); } //在session中保存校验码 System.Web.HttpContext.Current.Session["VerificationCode"] = checkCode; //若校验码为空,则直接返回 if (checkCode == null || checkCode.Trim() == String.Empty) { return; } //根据校验码的长度确定输出图片的长度 System.Drawing.Bitmap image = new System.Drawing.Bitmap(55, 20);//(int)Math.Ceiling(Convert.ToDouble(checkCode.Length * 15)) //创建Graphics对象 Graphics g = Graphics.FromImage(image); try { //生成随机数种子 Random random = new Random(); //清空图片背景色 g.Clear(Color.White); //画图片的背景噪音线 10条 //--------------------------------------------------- for (int i = 0; i < 10; i++) { //噪音线起点坐标(x1,y1),终点坐标(x2,y2) int x1 = random.Next(image.Width); int x2 = random.Next(image.Width); int y1 = random.Next(image.Height); int y2 = random.Next(image.Height); //用银色画出噪音线 g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2); } //--------------------------------------------------- //Brush b = Brushes.Silver; //g.FillRectangle(b, 0, 0, image.Width, image.Height); //---------------------以上两种任选其一------------------------------ //输出图片中校验码的字体: 12号Arial,粗斜体 Font font = new Font("Arial", 12, (FontStyle.Bold | FontStyle.Italic)); //线性渐变画刷 LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.Purple, 1.2f, true); g.DrawString(checkCode, font, brush, 2, 2); //画图片的前景噪音点 50个 for (int i = 0; i < 50; i++) { int x = random.Next(image.Width); int y = random.Next(image.Height); image.SetPixel(x, y, Color.FromArgb(random.Next())); } //画图片的边框线 g.DrawRectangle(new Pen(Color.Peru), 0, 0, image.Width - 1, image.Height - 1); //创建内存流用于输出图片 using (MemoryStream ms = new MemoryStream()) { //图片格式指定为png image.Save(ms, ImageFormat.Jpeg); //清除缓冲区流中的所有输出 System.Web.HttpContext.Current.Response.ClearContent(); //输出流的HTTP MIME类型设置为"image/Png" System.Web.HttpContext.Current.Response.ContentType = "image/Jpeg"; //输出图片的二进制流 System.Web.HttpContext.Current.Response.BinaryWrite(ms.ToArray()); } } finally { //释放Bitmap对象和Graphics对象 g.Dispose(); image.Dispose(); } }
登录后复制
创建一个aspx页面
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="AuthCode.aspx.cs" Inherits="AuthCode" %> <%Help.CreateVerificationCode(); %>
登录后复制
添加HTML代码,引用
<div class="positionR"> <label>验证码:</label> <span class="style1"> *</span> <input type="text" class="yanZm" runat="Server" reg="^.+$" id="txtAuthCode" tip="请输入验证码!" /> <img class="yanZm_img" src="AuthCode.aspx" alt="" id="imgAuthCode" /> </div>
登录后复制
如何实现刷新?
<script type="text/javascript"> $("#imgAuthCode").click(function () { $(this).attr("src", "AuthCode.aspx?code=" + (new Date()).getTime()); }); </script>
登录后复制
效果图
更多ASP.NET实现验证码以及刷新验证码的小例子相关文章请关注PHP中文网!
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章
击败分裂小说需要多长时间?
3 周前
By DDD
仓库:如何复兴队友
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
公众号网页更新缓存难题:如何避免版本更新后旧缓存影响用户体验?
3 周前
By 王林
两个点博物馆:所有展览以及在哪里可以找到它们
3 周前
By 尊渡假赌尊渡假赌尊渡假赌

热门文章
击败分裂小说需要多长时间?
3 周前
By DDD
仓库:如何复兴队友
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
公众号网页更新缓存难题:如何避免版本更新后旧缓存影响用户体验?
3 周前
By 王林
两个点博物馆:所有展览以及在哪里可以找到它们
3 周前
By 尊渡假赌尊渡假赌尊渡假赌

热门文章标签

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)