ASP.net 生成验证码
一.说明
此文是小白在学习张晨光老师的视频教学<<Asp.Net WEB服务器编程技术>>中做的学习笔记,一些知识点也是跟着教程走的,大家也可以去老师的主页去学习,谢谢大家.
二.生成验证码图片(checkcode.aspx.cs)
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace MyMusci
{public partial class checkcode : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){string chkCode = string.Empty;int ix, iy;ix = 80;iy = 24;//颜色列表,用于验证码、噪线、噪点 Color[] color = { Color.Black, Color.Red, Color.Blue, Color.Green, Color.Orange, Color.Brown, Color.Brown, Color.DarkBlue };//字体列表,用于验证码 string[] font = { "Times New Roman", "MS Mincho", "Book Antiqua", "Gungsuh", "MingLiU", "Arial" };//验证码的字符集,去掉了一些容易混淆的字符 char[] character = { '2', '3', '4', '5', '6', '8', '9','0','1','一','小','白' };Random rnd = new Random();//生成验证码字符串 for (int i = 0; i < 4; i++){chkCode += character[rnd.Next(character.Length)];}Bitmap bmp = new Bitmap(ix, iy);Graphics g = Graphics.FromImage(bmp);g.Clear(Color.White);//画噪线 for (int i = 0; i < 10; i++){int x1 = rnd.Next(ix);int y1 = rnd.Next(iy);int x2 = rnd.Next(ix);int y2 = rnd.Next(iy);Color clr = color[rnd.Next(color.Length)];g.DrawLine(new Pen(clr), x1, y1, x2, y2);}//画验证码字符串 for (int i = 0; i < chkCode.Length; i++){string fnt = font[rnd.Next(font.Length)];Font ft = new Font(fnt, 14, FontStyle.Bold);Color clr = color[rnd.Next(color.Length)];g.DrawString(chkCode[i].ToString(), ft, new SolidBrush(clr), (float)i * 16 + 2, (float)2);}//画噪点 for (int i = 0; i < 50; i++){int x = rnd.Next(bmp.Width);int y = rnd.Next(bmp.Height);Color clr = color[rnd.Next(color.Length)];bmp.SetPixel(x, y, clr);}//将验证码写入SESSION,为什么第二个页面没法获取值???//一般处理程序增加接口文件;Session["Code"] = chkCode.ToUpper();//清除该页输出缓存,设置该页无缓存 Response.Buffer = true;Response.ExpiresAbsolute = System.DateTime.Now.AddMilliseconds(0);Response.Expires = 0;Response.CacheControl = "no-cache";Response.AppendHeader("Pragma", "No-Cache");//将验证码图片写入内存流,并将其以 "image/Png" 格式输出 //我这个页面返回的是图片;MemoryStream ms = new MemoryStream();try{bmp.Save(ms, ImageFormat.Png);Response.ClearContent();Response.ContentType = "image/Png";Response.BinaryWrite(ms.ToArray());}finally{//显式释放资源 bmp.Dispose();g.Dispose();}}}
}
三.登录页面添加验证码(login_new.aspx)
在table中添加如下代码
<tr><td>验证码</td><td><asp:TextBox ID="code" runat="server"></asp:TextBox></td><td><img id="imgcode" src="checkcode.aspx" /></td>
</tr>
<tr><td><asp:Button ID="btn_sub" runat="server" class="btn btn-primary" OnClick="btn_sub_Click" Text="登录" /></td><td><%--此处将重置按钮替换为注册(LinkButton)控件PostBackUrl 表示控件点击后跳转的位置CausesValidation="False" 表示不用通过验证控件便可以跳转位置--%><asp:LinkButton ID="LinkButton1" runat="server" class="btn btn-secondary" PostBackUrl="~/RegUser.aspx" CausesValidation="False">注册</asp:LinkButton></td><td> </td>
</tr>
加入jquery.js,并添加如下脚本:
<script>//图片点击事件$("#imgcode").click(function () {$("#imgcode").attr("src", "checkcode.aspx?t=" + Math.random());})
</script>
当我们每次点击图片时,会刷新图片的内容,也就时验证码的内容:
ASP.net 生成验证码相关推荐
- ASP.NET生成验证码
Code /************************************************************************/ /* 类名:无 * 功能:生成验证码图片 ...
- java aspx 验证码,asp 动态生成验证码
Const nMaxSaturation = 100 ' 最大色彩饱和度 Const nBlankNoisyDotOdds = 0.2 ' 空白处噪点率 Const nColorNoisyDot ...
- 【转】asp.net mvc生成验证码
ASP.NET MVC实现网站验证码功能 网站添加验证码,主要为防止机器人程序批量注册,或对特定的注册用户用特定程序暴力破解方式,以进行不断的登录.灌水等危害网站的操作.验证码被广泛应用在注册.登录. ...
- ASP.NET Core 生成验证码
点击蓝字 关注我 使用验证码保护网站免受垃圾信息的选择有很多,比如Google ReCaptcha和captcha.com.这两者都可以整合到ASP.NET Core应用中去.然而,如果你出于某些原因 ...
- ASP.NET 实现登录界面(生成验证码)
这周末也没干啥,真正开始ASP,做了个学籍管理系统的登录界面,登录界面主要包括用户名.密码.验证码,界面字体用了<font size="5" color="blue ...
- [转]asp.net(c#)生成验证码 点击可刷新
先建一张生成验证码的网页CheckCode.aspx: CheckCode.aspx.cs代码如下 添加引用: using System.IO; using System.Drawing; using ...
- 完整asp.net图形验证码程序
1.测试页面:Default.aspx <%@ Page Language="C#" AutoEventWireup="true" CodeFile=& ...
- C# 生成验证码 方法一
注意命名空间的引用 在项目中新建Validcode.aspx <%@ Page Language="C#" AutoEventWireup="true" ...
- Asp.net 实现验证码功能的Web控件
Asp.net的设计方式和设计理念和其他的如Asp,Jsp,Php,Perl 等都不一样,几乎是完全的面向对象设计!代码的复用就是其 中差异较大的特点之一,Asp.net除了可以用Incl ...
最新文章
- R语言-RStudio打开中文注释的脚本后出现乱码
- 合集 | 我在传统行业做数字化转型
- 物联网和互联网的区别
- java正则表达式 分词_[Java]使用正则表达式实现分词
- 假如买彩票中了100万怎样安全地把钱领回来?
- 小升初数学计算机考试题,重点中学小升初数学分班考试模拟试卷试题及解析总结计划-20210513100212.docx-原创力文档...
- python笔试题 github_在GitHub上收获6519颗星星的Python面试题资源,到底有多牛?
- 音乐和计算机跨界融合,音乐类综艺跨界融合有了新思路
- seo外链工具是什么?外链工具有用吗?
- 密码编码学与网络安全(第五版)答案
- Windows下Pycharm专业版2021.2以及Anaconda安装教程
- Cartopy绘图入门指南
- 怎样使用 Hardhat 开发 Solidity 智能合约
- c++判断整数翻转溢出_C++整数溢出
- 非诚勿扰:比舒淇更孤单的是谁?
- 产品经理–是否具有战略意义?
- Golang线程池gpool
- VR眼镜连接android设备,如何将VR眼镜的屏幕投影到计算机或电视上?
- Egret:一个简单的打砖块游戏
- C语言笔记 · 输入函数(scanf(),getchar(),getche(),getch(),gets())
热门文章
- AOP面向切面编程简单使用
- 新手小白做短视频自媒体,不知道如何开始?教你如何快速起步
- xp系统怎么添加wifi连接服务器,xp如何连接隐藏wifi xp怎么连接隐藏的wifi?-192路由网...
- tmall.item.hscode.audit.results.query( 商品hscode信息审核状态查询接口 )
- 基于平衡计分卡框架设计DevOps战略
- Word小技巧-快速取消自动编号
- wps怎么取消自动编号?四种方法任你选择
- 深入理解python装饰器
- word2016,分成两栏后文字顺序混乱的问题
- 说服我男朋友辞职的第365天