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

我们需要在前台代码中写一段<img>,src指向一张页面(ValidateImage.aspx)

<html><head><title>数字验证码</title>
<script language="javascript">function changeImg() {$("#imgCheckNo").attr("src", "ValidateImage.aspx?r=" + getRandom(999));}function getRandom(n) { return Math.floor(Math.random() * n + 1) }
</script></head>
<body>
<div>
<img id="imgCheckNo" src="ValidateImage.aspx" style="border-color: #000000; border-width: 1px;border-style: Solid"><span οnclick="changeImg();">看不清?换一张</span></div>
<div><div class="labelCss">验证码:</div>
<div>
<asp:TextBox ID="tbxCheckNo" runat="server" CssClass="tbxCss"></asp:TextBox>
</div>
<div>
<asp:Button ID="btnSubmit" runat="server" Text="立即注册" OnClick="btnSubmit_Click" />
</div>

 </body>

</html>

//ValidateImage.aspx 用来生产验证码图片,并将验证码的码值保存到cookie中。public partial class ValidateImage : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){this.CreateCheckCodeImage(RndNum());}/// <summary>生成验证码/// </summary>/// <returns></returns>private string RndNum(){int number;char code;string checkCode = String.Empty;System.Random random = new Random();for (int i = 0; i < 4; i++){number = random.Next();if (number % 2 == 0)code = (char)('0' + (char)(number % 10));elsecode = (char)('A' + (char)(number % 26));checkCode += code.ToString();}Response.Cookies.Add(new HttpCookie("yzmcode", checkCode));return checkCode;}/// <summary>向页面生成验证码Gif图片/// </summary>/// <param name="checkCode"></param>private void CreateCheckCodeImage(string checkCode){if (checkCode == null || checkCode.Trim() == String.Empty)return;System.Drawing.Bitmap image = new System.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length * 12.5)), 22);Graphics g = Graphics.FromImage(image);try{//生成随机生成器Random random = new Random();//清空图片背景色
                g.Clear(Color.White);//画图片的背景噪音线for (int i = 0; i < 25; i++){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);}Font font = new System.Drawing.Font("Arial", 12, (System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic));System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2f, true);g.DrawString(checkCode, font, brush, 2, 2);//画图片的前景噪音点for (int i = 0; i < 100; 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.Silver), 0, 0, image.Width - 1, image.Height - 1);System.IO.MemoryStream ms = new System.IO.MemoryStream();image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);Response.ClearContent();Response.ContentType = "image/Gif";Response.BinaryWrite(ms.ToArray());}finally{g.Dispose();image.Dispose();}}}//最后就是后台事件,判断当前验证码是否正确。#region 页面控件事件protected void btnSubmit_Click(object sender, EventArgs e){if (String.Compare(Request.Cookies["yzmcode"].Value, tbxCheckNo.Text, true) != 0){Response.Write("<script>alert('验证码错误!')</script>");}else{// Response.Write("<script>alert('验证吗正确!!!')</script>");
            }}#endregion

转载于:https://www.cnblogs.com/felix-wang/p/6943349.html

asp.net验证码图片生成示例相关推荐

  1. 高性能验证码图片生成

    高性能验证码图片设计 介绍 在涉及敏感信息输入或者用户信息获取.校验,经常会使用图形验证码提高安全性.在保障安全性的同时,验证码图片的生成也会给服务带来一定的性能损耗.如果验证码图片获取频率大或者被人 ...

  2. java captcha 验证码_验证码图片生成工具类——Captcha.java

    验证码图片生成工具,使用JAVA生成的图片验证码,调用getRandcode方法获取图片验证码,以流的方式传输到前端页面. import java.awt.Color; import java.awt ...

  3. SpringBoot2后端项目-验证码图片生成

    目录 1.项目创建 1.1 初始化的 pom.xml文件 1.2 应用初始化设置 2.验证码生成前的准备 2.1 分析 2.2 整合 redis 2.3 验证码生成的工具类 2.4 定义一个统一返回给 ...

  4. python实现随机验证码图片生成

    最近在学习 深度学习实现验证码模型训练,因为需要大量的验证码图片,所以要自动生成验证码图片,效果图: 首先安装相应的库包: #验证码生成库 pip install captcha #进度条显示库,显示 ...

  5. J2EE如何生成验证码图片和点击刷新验证码

    验证码图片生成步骤 创建BufferedImage对象. 获取BufferedImage的画笔,即调用getGraphics()方法获取Graphics对象. 调用Graphics对象的setColo ...

  6. 打2把王者荣耀的时间,学会JAVA自制验证码图片

    如果你在12306买过票,那也不会对着验证码微笑.当普通人大骂验证码狗血脸残莫名其妙,只有程序员们深知这其中的奥妙,曰: 全自动区分计算机和人类的图灵测试 虽然网上有一些很不错的验证码开源插件如kap ...

  7. 从零开始的Django框架入门到实战教程(内含实战实例) - 08 用户界面(内含图形验证码的生成和校验详解)(学习笔记)

    目录 0. 既有工作 1. 生成图片 2. 校验 3. 结果展示   Django是目前比较火爆的框架,之前有在知乎刷到,很多毕业生进入大厂实习后因为不会git和Django框架3天就被踢掉了,因为他 ...

  8. SSM框架下实现验证码图片验证功能(源码)

    SSM框架下实现验证码图片验证功能 背景图片资源路径 https://download.csdn.net/download/hero_qhz/10322064 一.首先,在pom里面加上需要用的资源j ...

  9. python发票识别代码_python 发票验证码自动生成

    有的时候我们使用一些自动化脚本需要自动登录到一些网站做一些操作,提高工作的效率.但验证码是一个拦路虎,面对各种复杂的甚至连人都可能搞错的验证码,机器的自动识别往往变得异常艰难,与验证码的斗争使我们头疼 ...

最新文章

  1. java窗口how2j_java面向对象1(学习笔记HOW2J)
  2. 概率分布的熵归一化(Entropy Normalization)
  3. 11gpath失败 oracle_Oracle 11gR2执行DBCA报错误
  4. mall整合RabbitMQ实现延迟消息
  5. 一个程序员的“无聊”故事
  6. canvas基础之旅
  7. spring使用@Value注解读取.properties文件时出现中文乱码问题的解决
  8. AVL Cruise 2020安装教程
  9. [RK3399][Android7.1][Camera]IMX307 mclk 37.125M补丁
  10. 小字符喷码机和高解析喷码机的区别
  11. (1.6w字)浏览器与前端性能灵魂之问,请问你能接得住几个?
  12. 小米手机 VS 阿里手机,阿里输在512MB内存,华为Honor只有电池容量跟小米差不多...
  13. 8g u盘容量变小格式化u盘内存变小--已解决
  14. 年度最高奖金【198 万+198 万】:2021年全国人工智能大赛开赛啦
  15. ubuntu安装pr_Ubuntu 18.04 安装 Openbravo-3.0PR19Q1
  16. rep()函数的使用
  17. 开关电源-反激+单级PFC超低纹波超低THD
  18. IDEA插件系列(77):Spec Math symbols插件——数学符号
  19. 动态ip代理:保护ip地址,这五种方法请收好
  20. 美国华盛顿州立大学计算机排名,华盛顿州立大学专业排名一览及最强专业推荐(USNEWS美国大学排名)...

热门文章

  1. English学习资料大全
  2. 海外高校毕业证的颜色
  3. hive的udf,udaf,udtf各自依賴兩種class(转载+分析整理)
  4. 数据湖三种方案的流行度调查
  5. django中的form.is_valid()总是返回False
  6. const char* p 、char* const p、const (char*) p 理解记忆
  7. Oracle 中 call 和 exec的区别
  8. Parse Fatal Error at line 4 column 43: 已经为元素 web-app 指定属性 xmlns。
  9. Wannafly挑战赛22游记
  10. Git使用出错:Couldn‘t reserve space for cygwin‘s heap, Win32