Before proceeding with the topic first we must understand "What is a Captcha code?" and "Why do we use them?". Most web sites have a Captcha validation in their sites.

What is the Captcha code?

A Captcha code is simply a combination of some characters and numbers like "Alk13" or "aTu2eP" etc.

Why do we use them?

We use them for validating that the client browser window really has a human typing into it.

Ok, let's get to the topic i.e. creating your own Captcha code in ASP.Net.

Step 1

Go to Visual Studio and create a new project (web site or web application) say "CaptchCode".

Step 2

Now add a new page into your application say "ShowCaptcha.aspx" and add this code into the source for the page:

<div>
<table>
<tr>
<td>
<asp:Image ID="imgCaptcha" runat="server" ImageUrl="~/CreateCaptcha.aspx?New=1"/>
</td>
</tr>
<tr>
<td>
<asp:TextBox ID="txtCaptcha" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td>
<asp:Label ID="lblMessage" runat="server"></asp:Label>
</td>
</tr>
<tr>
<td>
<asp:Button ID="btnCaptcha" runat="server" Text="Validate Cpatcha Code" onclick="btnCaptcha_Click" />
</td>
</tr>
</table>
</div>

Note: Here I am given the ImageUrl="~/CreateCaptcha.aspx?New=1" of the image control. In CreateCaptcha.aspx we will write the code for creating the Captcha code.

Step 3

Now add a new page into your application "CreateCaptcha.aspx" and create the following methods in its .cs file:

/// <summary>

/// method for create captcha image

/// </summary>

 private void CreateCaptchaImage()

{ 

 code = GetRandomText();

 Bitmap bitmap = new Bitmap(, , System.Drawing.Imaging.PixelFormat.Format32bppArgb);

 Graphics g = Graphics.FromImage(bitmap);

 Pen pen = new Pen(Color.Yellow);

 Rectangle rect = new Rectangle(, , , );

 SolidBrush blue = new SolidBrush(Color.CornflowerBlue);

 SolidBrush black = new SolidBrush(Color.Black);

 int counter = ;

 g.DrawRectangle(pen, rect);

 g.FillRectangle(blue, rect);

 for (int i = ; i < code.Length; i++)

 {

    g.DrawString(code[i].ToString(), new Font("Tahoma",  + rand.Next(, ), FontStyle.Italic), black, newPointF( + counter, ));

   counter += ;

 }

 DrawRandomLines(g);          

 bitmap.Save(Response.OutputStream, ImageFormat.Gif);

 g.Dispose();

 bitmap.Dispose();

}

/// <summary>

/// Method for drawing lines

/// </summary>

/// <param name="g"></param>

private void DrawRandomLines(Graphics g)

{

   SolidBrush yellow = new SolidBrush(Color.Yellow);

   for (int i = ; i < ; i++)

   {g.DrawLines(new Pen(yellow, ), GetRandomPoints());}

}

/// <summary>

/// method for gettting random point position

/// </summary>

/// <returns></returns>

private Point[] GetRandomPoints()

{

  Point[] points = { new Point(rand.Next(, ), rand.Next(, )), new    Point(rand.Next(, ), rand.Next(, )) };

  return points;

}

/// <summary>

/// Method for generating random text of 5 cahrecters as captcha code

/// </summary>

/// <returns></returns>

private string GetRandomText()

{

  StringBuilder randomText = new StringBuilder();          

  string alphabets = "012345679ACEFGHKLMNPRSWXZabcdefghijkhlmnopqrstuvwxyz";

  Random r = new Random();

  for (int j = ; j <= ; j++)

  {randomText.Append(alphabets[r.Next(alphabets.Length)]);}

    Session["CaptchaCode"] = randomText.ToString();

     return Session["CaptchaCode"] as String;

  }

Step 4 

To validate the Captcha code in the "ShowCaptcha.aspx.cs" page:

protected void btnCaptcha_Click(object sender, EventArgs e)

{

   //imgCaptcha.ImageUrl = "~/CreateCaptcha.aspx?New=0";

  if (Session["CaptchaCode"] != null && txtCaptcha.Text == Session["CaptchaCode"].ToString())

  {

     lblMessage.ForeColor = Color.Green;

     lblMessage.Text = "Captcha code validated successfully!!";

  }

  else

  {

   lblMessage.ForeColor = Color.Red;

   lblMessage.Text = "Captcha code is wrong!!";

  }

}

I hope this article will be helpful for you.

Happy Coding!!

附代码:下载

asp.net 验证码的更多相关文章

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

    ASP.net 验证码(C#) MVC http://blog.163.com/xu_shuhao/blog/static/5257748720101022697309/ 网站添加验证码,主要为防止机 ...

  2. MVC的验证(模型注解和非侵入式脚本的结合使用) .Net中初探Redis .net通过代码发送邮件 Log4net (Log for .net) 使用GDI技术创建ASP.NET验证码 Razor模板引擎 (RazorEngine) .Net程序员应该掌握的正则表达式

    MVC的验证(模型注解和非侵入式脚本的结合使用)   @HtmlHrlper方式创建的标签,会自动生成一些属性,其中一些属性就是关于验证 如图示例: 模型注解 通过模型注解后,MVC的验证,包括前台客 ...

  3. Asp.Net验证码2

    using System; using System.Collections.Generic; using System.Web; using System.Web.UI; using System. ...

  4. 关于 ASP.NET 验证码

    Session["CheckCode"] 这个..不懂神马意思.. .创建一个用户控件 用户名:TextBox 密码: TextBox 验证码:TextBox 验证码图片 < ...

  5. ASP.NET 验证码 不同浏览器 不刷新问题

    具体为什么不刷新是缓存机制不同,验证码图片的src或ImageUrl的获取是来自一个文件,由于连接地址没变所以不同内核浏览器有的会认为源没有变,解决办法就是在连接后面加上一个随机参数如可以用JS的Ma ...

  6. asp.net验证码及怎么获取里面的数值(整合)

    一.ASP.Net的验证码的作用 对于一个预防攻击的web表单来讲,验证码通常是一个常见的措施.因为如果对于一些public区域的页面内容来讲,譬如一个登录表单,如果没有必要的安全措施,很可能遭到模拟 ...

  7. ASP.NET——验证码的制作

            我们在登陆站点,发表博客或者提交评论的时候,常常会遇到填写验证码这一项,当时感觉挺奇妙的样子,最终在牛腩新闻公布系统里接触到了,在这里小小的总结下.         用到的东东有三个: ...

  8. asp.net 验证码技术

    网站验证码是一种很常用的技术.下面我介绍下技术上是如何实现的. 验证码是一张图片.我们需要在前台代码中写一段<img>,src指向一张页面(ValidateImage.aspx). < ...

  9. asp.net验证码的编写

    很多时候我们在登录什么网站的时候,除了需要什么用户名和密码之外,有的还需要验证码那么在asp.net中这个验证码如何编写和设计,今天我就来给大家说一下: 首先创建一个页面名字随便起一个,我们这里叫做C ...

  10. asp.net验证码

    asp.net 生成验证码问题 .添加一个.ashx文件 <%@ WebHandler Language="C#" class="CheckCode" % ...

随机推荐

  1. GRAPH ATTENTION NETWORKS

    基本就是第一层concatenate,第二层不concatenate. 相关论文: Semi-Supervised Classification with Graph Convolutional Ne ...

  2. Linux:Tomcat报错: Error creating bean with name 'mapScheduler' defined in ServletContext resource 的解决方法

    2013-12-31 14:22:28 [ERROR] [ContextLoader.java->initWebApplicationContext(220) Context initializ ...

  3. Mysql 配置文件和目录的合理分配

    记得给权限呀, 权限呀, 都是泪 多实例 单实例 配置文件 [client] port = 3301 socket = /data/mysql3301/data/mysqld3301.sock [my ...

  4. Oracle 数据泵详解

    一.EXPDP和IMPDP使用说明 Oracle Database 10g引入了最新的数据泵(Data Dump)技术,数据泵导出导入(EXPDP和IMPDP)的作用 1)实现逻辑备份和逻辑恢复. 2 ...

  5. 【转】【Python】Python中的__init__.py与模块导入(from import 找不到模块的问题)

    python中的Module是比较重要的概念.常见的情况是,事先写好一个.py文 件,在另一个文件中需要import时,将事先写好的.py文件拷贝 到当前目录,或者是在sys.path中增加事先写好的 ...

  6. Java如何格式化月份?

    在Java中,如何以MMMM格式格式化时间? 这个示例使用SimpleDateFormat('MMMM')构造函数和SimpleDateFormat类的sdf.format(date)方法来格式化月份 ...

  7. linux 上安裝lnmp

    1.確保有一台服務器可以正常運行 2.熟練知道一些基本的命令 3.這裡我以lnmp集成環境為例 https://lnmp.org/install.html 4.安裝大約30分鐘左右 5.安裝完畢,訪問 ...

  8. jquery ajax 设置全局(常量和变量)

    允许同源(相同域名不同端口)跨域配置: $.ajaxSetup({ xhrFields: { withCredentials: true } }); ajax所有的请求的全局设置: 此处为设置 自定义 ...

  9. Service 保活法之二

    正确应对系统内存不足,OnLowMemory和OnTrimMemory回调 理论上,一个具备良好行为的应用应该考虑Android系统内存紧张的问题,这样有助于维持一个良好的生态.在前人的基础上,本文对 ...

  10. spark 分析日志文件(key,value)

    Spark读取日志,统计每个service所用的平均时间 发布时间:2015-12-10 9:54:15来源:分享查询网 获取log日志,每个service以“#*#”开头.统计每个service所需 ...