作业:验证码要求:(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验证码相关问题相关推荐

  1. ASP.net 验证码(C#)

     ASP.net 验证码(C#) /* Copyright all(c) 2005 ZhongFeng, http://blog.csdn.net/SW515 */  public class Val ...

  2. 登录之验证码相关实现

    一,登录页面为什么要有验证码? 防止用户恶意的频繁向后端发送请求,使得服务端的压力大增,避免不必要的请求压力. 以Django为例,关于图片验证码和滑动验证码的实现 二.图片验证码的实现 路由部分 u ...

  3. C#发现之旅第九讲 ASP.NET验证码技术

    C#发现之旅第九讲 ASP.NET验证码技术 袁永福 2008-5-15 系列课程说明     为了让大家更深入的了解和使用C#,我们将开始这一系列的主题为"C#发现之旅"的技术讲 ...

  4. asp.net mvc相关开源项目推荐

    原文地址为: asp.net mvc相关开源项目推荐 asp.net mvc ctp版本发布不到一个月时间,在社区出现了丛多的优秀开源项目,社区的活跃性非常高哦,前一段时间园子里也引发了MVC和Web ...

  5. ASP.NET 验证码示例

    <%@ Page Language="C#" %> <%@ Import Namespace="System.Drawing" %> & ...

  6. asp.net验证码图片生成示例

    验证码,一个很常见的东西.不管你是使用者还是开发者,这个东西80%的人都见到过,但是之前有人给我说过这么一句话"内行看门道,外行看热闹!",仔细琢磨一下还真的是那么一回事.对于怎么 ...

  7. ASP.NET验证码的实现

    /* Copyright all(c) 2005 ZhongFeng, http://blog.csdn.net/SW515 */  public class ValidateCode : Syste ...

  8. asp/php招聘,招聘ASP与PHP相关岗位的笔经

    谈谈asp,php,jsp的优缺点(1分) asp:简单而易于维护,很适合小型网站应用,通过DCOM和MTS技术,ASP甚至还可以完成小规模的企业应用,但ASP的致命缺点就是不支持跨平台的系统,在大型 ...

  9. ASP.NET RouteModule相关的一些东西

    Asp.NET中的路由配置,首先要提到的几个相关类型,Route ,RouteBase,RouteData,RouteTable,RouteCollection 这几个.下面我一次回忆一下,有需要的朋 ...

最新文章

  1. CListCtrl创建方法
  2. 征服Perl——输入输出相关知识——里程碑M6
  3. 关于ExtJS3.0组件连接http://extjs.com/s.gif的问题
  4. java常用类介绍及源码阅读(ArrayList)
  5. 2.1 linux C 进程与多线程入门--(1)进程和程序的区别
  6. git rm -r --cached_【Git】工作中99%能用到的git命令
  7. 上市之前再被爆出安全问题 卫龙辣条被爆吃出“锁精环”
  8. 订阅号获取openid_小程序订阅消息
  9. 【比赛】智源-知乎联合发布大规模用户邀请回答数据集,同步开启10万元竞赛...
  10. 完美解决Win8声卡爆音破音、卡顿
  11. 我的WCF之旅(5):面向服务架构(SOA)和面向对象编程(OOP)的结合——如何实现Service Contract的重载(Overloading)...
  12. 【图像加密】基于matlab Logistic混沌图像加密与解密【含Matlab源码 1216期】
  13. oa系统服务器数据库,oa数据库和服务器
  14. HBase预分区设计
  15. 人在职场,身不由己?
  16. 格子刷油漆c++dp(最详细)
  17. Ubuntu Vmware虚拟机网络配置(二)
  18. c语言编程中句柄无效怎么解决,Win7玩英雄联盟出现句柄无效怎么解决?
  19. html简述四种基本标记的作用,HTML的常用标记
  20. 武汉大学计算机系就业方向如何,武汉大学有什么王牌专业?它们的就业在哪些方向?...

热门文章

  1. Spring Security 权限控制
  2. 计算机考研网红学校,今天,这位“网红”博士回母校演讲,8分钟说了这些.........
  3. 已解决SyntaxError: EOL while scanning string literal
  4. Go 指针类与变量的*(星号)与(取址符)
  5. 超好用的大数据分析平台分享,SuccBI 一站式大数据分析平台
  6. 神经网络越训练准确率越低,神经网络训练的优势
  7. Unity中基于三角剖分 实现三维城市实时构建
  8. Blender - 渲染动画:体积云、动画、运动模糊、Compositor数据输出
  9. BootCamp 分区 作死+修复记
  10. Java——吃货联盟订餐系统(基础知识)