asp.net 验证码
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 验证码的更多相关文章
- ASP.net 验证码(C#) MVC
ASP.net 验证码(C#) MVC http://blog.163.com/xu_shuhao/blog/static/5257748720101022697309/ 网站添加验证码,主要为防止机 ...
- MVC的验证(模型注解和非侵入式脚本的结合使用) .Net中初探Redis .net通过代码发送邮件 Log4net (Log for .net) 使用GDI技术创建ASP.NET验证码 Razor模板引擎 (RazorEngine) .Net程序员应该掌握的正则表达式
MVC的验证(模型注解和非侵入式脚本的结合使用) @HtmlHrlper方式创建的标签,会自动生成一些属性,其中一些属性就是关于验证 如图示例: 模型注解 通过模型注解后,MVC的验证,包括前台客 ...
- Asp.Net验证码2
using System; using System.Collections.Generic; using System.Web; using System.Web.UI; using System. ...
- 关于 ASP.NET 验证码
Session["CheckCode"] 这个..不懂神马意思.. .创建一个用户控件 用户名:TextBox 密码: TextBox 验证码:TextBox 验证码图片 < ...
- ASP.NET 验证码 不同浏览器 不刷新问题
具体为什么不刷新是缓存机制不同,验证码图片的src或ImageUrl的获取是来自一个文件,由于连接地址没变所以不同内核浏览器有的会认为源没有变,解决办法就是在连接后面加上一个随机参数如可以用JS的Ma ...
- asp.net验证码及怎么获取里面的数值(整合)
一.ASP.Net的验证码的作用 对于一个预防攻击的web表单来讲,验证码通常是一个常见的措施.因为如果对于一些public区域的页面内容来讲,譬如一个登录表单,如果没有必要的安全措施,很可能遭到模拟 ...
- ASP.NET——验证码的制作
我们在登陆站点,发表博客或者提交评论的时候,常常会遇到填写验证码这一项,当时感觉挺奇妙的样子,最终在牛腩新闻公布系统里接触到了,在这里小小的总结下. 用到的东东有三个: ...
- asp.net 验证码技术
网站验证码是一种很常用的技术.下面我介绍下技术上是如何实现的. 验证码是一张图片.我们需要在前台代码中写一段<img>,src指向一张页面(ValidateImage.aspx). < ...
- asp.net验证码的编写
很多时候我们在登录什么网站的时候,除了需要什么用户名和密码之外,有的还需要验证码那么在asp.net中这个验证码如何编写和设计,今天我就来给大家说一下: 首先创建一个页面名字随便起一个,我们这里叫做C ...
- asp.net验证码
asp.net 生成验证码问题 .添加一个.ashx文件 <%@ WebHandler Language="C#" class="CheckCode" % ...
随机推荐
- R语言提取包含某字符串的行变量
已解决,用grep函数 A=read.table("clipboard",sep="/t",header=T) A[grep(pattern="/re ...
- 【转】Smartphone--Android真机管理平台
背景 最近在工作中发现几个问题: 作为测试人员,在做产品兼容性测试时,发现手上的测试设备总是不够用,但是可能其他同事的设备在闲置着: 作为Android和H5开发人员,如果测试同事发现一个兼容性的bu ...
- [hadoop读书笔记]译者序
一.并行数据库系统 新一代高性能的数据库系统,是在MPP和集群并行计算环境的基础上建立的数据库系统. MPP:大规模并行处理计算机:Massive Parallel Processor.指的是一种处理 ...
- Python __str__函数
class Cat: def __init__(self,_name): self.name = _name def __str__(self): return "i am %s" ...
- 自然语言交流系统 phxnet团队 创新实训 项目博客 (十二)
关于情感词典的学习总结: 情感倾向可认为是主体对某一客体主观存在的内心喜恶,内在评价的一种倾向.它由两个方面来衡量:一个情感倾向方向,一个是情感倾向度. 情感倾向方向也称为情感极性.在微博中,可以理解 ...
- SAP FI 财务模块 关键用户 考试练习 问卷
FI概念部分课后练习:(20题, 开卷,本周五内完毕) PC端自我测试: http://www.xiaocar.net/index.php?s=/addon/Exam/Exam/show/exam_i ...
- Android 8 声音调整过程
记录Android 8声音调整过程. frameworks\base\services\core\java\com\android\server\policy\PhoneWindowManager.j ...
- 第三百三十九节,Python分布式爬虫打造搜索引擎Scrapy精讲—Scrapy启动文件的配置—xpath表达式
第三百三十九节,Python分布式爬虫打造搜索引擎Scrapy精讲—Scrapy启动文件的配置—xpath表达式 我们自定义一个main.py来作为启动文件 main.py #!/usr/bin/en ...
- (实用)Eclipse中使用命令行(运行外部程序)
备忘 http://www.oschina.net/question/28_46291 另外,在eclipse的console菜单中可以选择“new console view”(新控制台视图),这样就 ...
- zabbix 配置SNMP监控
什么是SNMP? 简单网络管理协议(SNMP),由一组网络管理的标准组成,包含一个应用层协议(application layer protocol).数据库模型(database schema)和一组 ...