ASP.NET验证码相关问题
作业:验证码要求:(1)验证码应该是图片格式,不能是文字格式,即无法用鼠标选中。(2)验证码上应该有噪点和干扰线条。(3)验证码应该回避相似字符,如“0”和“o”“I”和“1”等。(4)验证码至少是数字和字母(含大小写)的组合,不应该是单纯的数字或字母,可以出现汉字。应该实现输入验证码字母字母“不区分大小写”。验证码中的内容,应该是随机生成。(5)验证码,可以通过点击图片或旁边文字实现“看不清,换一张”的功能。(6)应当有个用于核对验证码输入是否正确的tbx和btn,当点击btn时,弹窗提示验证码输入的是正确或错误。
新建一个ashx文件
前端页面
<asp:Label ID="Label1" runat="server" Text="请输入验证码:" ></asp:Label>
<asp:TextBox ID="tbx_check" runat="server"></asp:TextBox>
<asp:ImageButton ID="ImageButton1" runat="server" src="checknumber.ashx" alt="验证码"/>
<asp:Button ID="btn_check" runat="server" Text="验证" OnClick="btn_check_Click" />
aspx代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.SessionState;namespace 验证码模块
{public partial class WebForm1 : System.Web.UI.Page, IRequiresSessionState{protected void Page_Load(object sender, EventArgs e){}protected void btn_check_Click(object sender, EventArgs e){//不区分大小写验证if (String.Compare(tbx_check.Text.Trim(), Session["check"].ToString(), true) == 0){Response.Write("<script>alert('验证码正确') </script>");}else{Response.Write("<script>alert('验证码错误') </script>");}}//点击图片更换验证码protected void ImageButton1_Click(object sender, ImageClickEventArgs e){ImageButton1.ImageUrl = "checknumber.ashx?id=" + new Random(100).ToString();}}
}
ashx代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
//画板
using System.Drawing;
using System.Drawing.Imaging;
//Session传值
using System.Web.SessionState;namespace 验证码模块
{/// <summary>/// Handler1 的摘要说明/// </summary>public class Handler1 : IHttpHandler, IRequiresSessionState{public void ProcessRequest(HttpContext context){//定义位图的宽度和高度int iBmpW = 200;int iBmpS = 50;//创建位图对象(并初始化宽度和高度)Bitmap Bmp = new Bitmap(iBmpW, iBmpS);//创建画布Graphics Grc = Graphics.FromImage(Bmp);//将位图装载到画布里面//将画布的背景色改为白色Grc.Clear(Color.White);//定义画笔对象SolidBrush solidBrush = new SolidBrush(Color.Blue);//定义存放的字符串,画布上要显示的验证码,回避相似字符所以去掉I、1、o、0string sString = "ABCDEFGHJKLMNPQRSTUVWXYZabcdefghyzklmnopqrstuvwxtz23456789呆锅工酱";//定义随机数Random Rnd = new Random((int)DateTime.Now.Ticks);//强制转换为整型//for存放随机数的字符变量string scode = null;for (int i = 0; i < 6; i++){string temp = sString.Substring(Rnd.Next(0, sString.Length), 1);//将随即得到的每个字符进行字符串构造scode += temp;}//随机输出噪点Random rand = new Random();for (int i = 0; i < 10; i++){int x = rand.Next(Bmp.Width);int y = rand.Next(Bmp.Height);Grc.DrawRectangle(new Pen(Color.LightGray, 0), x, y, 1, 1);}int z = 6;//干扰线条数for (int i = 0; i < z; i++){int x1 = rand.Next(Bmp.Width);int x2 = rand.Next(Bmp.Width);int y1 = rand.Next(Bmp.Height);int y2 = rand.Next(Bmp.Height);Grc.DrawLine(new Pen(Color.LightGray, 1), x1, y1, x2, y2);//根据坐标画线}Font ft = new Font("Arial", 25);Grc.DrawString(scode, ft, solidBrush, 0, 0);context.Response.ContentType = "image/jpg";Bmp.Save(context.Response.OutputStream, ImageFormat.Jpeg);//向外传scode的值以验证context.Session["check"] = scode;}public bool IsReusable{get{return false;}}}
}
ASP.NET验证码相关问题相关推荐
- ASP.net 验证码(C#)
ASP.net 验证码(C#) /* Copyright all(c) 2005 ZhongFeng, http://blog.csdn.net/SW515 */ public class Val ...
- 登录之验证码相关实现
一,登录页面为什么要有验证码? 防止用户恶意的频繁向后端发送请求,使得服务端的压力大增,避免不必要的请求压力. 以Django为例,关于图片验证码和滑动验证码的实现 二.图片验证码的实现 路由部分 u ...
- C#发现之旅第九讲 ASP.NET验证码技术
C#发现之旅第九讲 ASP.NET验证码技术 袁永福 2008-5-15 系列课程说明 为了让大家更深入的了解和使用C#,我们将开始这一系列的主题为"C#发现之旅"的技术讲 ...
- asp.net mvc相关开源项目推荐
原文地址为: asp.net mvc相关开源项目推荐 asp.net mvc ctp版本发布不到一个月时间,在社区出现了丛多的优秀开源项目,社区的活跃性非常高哦,前一段时间园子里也引发了MVC和Web ...
- ASP.NET 验证码示例
<%@ Page Language="C#" %> <%@ Import Namespace="System.Drawing" %> & ...
- asp.net验证码图片生成示例
验证码,一个很常见的东西.不管你是使用者还是开发者,这个东西80%的人都见到过,但是之前有人给我说过这么一句话"内行看门道,外行看热闹!",仔细琢磨一下还真的是那么一回事.对于怎么 ...
- ASP.NET验证码的实现
/* Copyright all(c) 2005 ZhongFeng, http://blog.csdn.net/SW515 */ public class ValidateCode : Syste ...
- asp/php招聘,招聘ASP与PHP相关岗位的笔经
谈谈asp,php,jsp的优缺点(1分) asp:简单而易于维护,很适合小型网站应用,通过DCOM和MTS技术,ASP甚至还可以完成小规模的企业应用,但ASP的致命缺点就是不支持跨平台的系统,在大型 ...
- ASP.NET RouteModule相关的一些东西
Asp.NET中的路由配置,首先要提到的几个相关类型,Route ,RouteBase,RouteData,RouteTable,RouteCollection 这几个.下面我一次回忆一下,有需要的朋 ...
最新文章
- 深入理解golang的defer
- Angular Component class属性初始化和构造函数执行的先后顺序
- 导出jar插件_Fluttify输出的Flutter插件工程详解
- Java程序员如何快速理解Kubernetes
- redistemplate使用_如何使用 SpringBoot + Redis 优雅的解决接口幂等性问题
- 十强决赛即将拉开帷幕!TECHSPARK星星之火IT创新大赛诚邀您观赛
- Java.Lang.NoSuchMethod 错误
- 圆与平面的接触面积_如果把绝对圆的球体放在绝对平的平面上,那接触面是不是无限小?...
- 晋南讲堂之持久层框架ORM简介
- Android 深色模式使用失效
- 澳大利亚维多利亚州旅游局力推高尔夫主题体验
- 特殊符号“.”对命令识别的影响:bam样本名报错 和 转换gene id时‘ENSEMBL’ keys无法识别
- 学儿歌听故事android源码,儿童宝宝听儿歌故事
- 软件测试之语音识别(ASR)测试
- 程序员-IT领域的魔法师
- 动态内存的分配与释放
- 上班族适合的兼职副业,副业做什么比较靠谱,副业赚钱的路子有哪些
- Java中valueOf()方法
- 七月在线 《图像识别与检测》
- [JAVA毕业设计]服装连锁店后台管理系统源码获取和系统演示
热门文章
- python 鼠标 自动点击_利用python模拟鼠标点击自动完成工作,提升你的工作效率!...
- LeetCode 729. 我的日程安排表 I
- 微信小程序的订单评论页面-仿淘宝
- 未能将管道连接到虚拟机: 所有的管道范例都在使用中。_泸溪县双卡压不锈钢管有哪些品牌-金管道...
- 配置NTP时间同步之Linux
- 医院PACS系统:三维多平面重建操作使用
- jsp引入js文件找不到,我发誓路径绝对正确
- 小程序与普通网页开发的区别
- touchesBegan: withEvent: 不执行解决
- Cocos2d-JS 加载网络地址图片