郑州网站建设-凯讯公司网站宣传口号图片
郑州网站建设-凯讯公司网站电话标志图片
0371-53778175
15333818157
当前位置:网站首页 >> 建站知识 >> 网站技术 >>


用ASP和ASP.NET结合实现网站上显示的验证码的生成技术


来源:郑州凯讯网站    发布人:郑州凯讯公司        发布日期:2013-12-01

我们在上网的时候经常会看到网站上显示让输入验证码,网站上显示出来的验证码实际上是自动生成的图片,图片中的数字或者字母是随机生成的。其实现原理就是:首先系统随机生成几位的数字或者文字,数字、字母、或者文字都是随机生成并组合在一起的,有的是纯数字的组合,有的是纯字母的组合,有的是数字和字母的组合,还有的是汉字的组合,更有甚者,是一个算术公式,让写出答案。但无论哪一种验证码的方式,都是把随机生成的字符加以组合,这就成了我们看到的网上所显示的验证码。第二步是利用网页的技术,生成一个带有一定的背景图案的图片,然后将上面生成的验证码嵌入其中,这样我们就有了验证码的图片了。第三步,再利用网页的技术将上面生成的验证码图片显示在网页上。这就是验证码生成的过程,下面我们利用 ASP和ASP.NET结合起来的技术,简单说明一下网页上的验证码是怎么生成的。

一、随机生成验证码上的数字或者字母组合:

代码如下:
<%@ Language=VBScript %>
<%
'获取随机数字
function GetRandomNum(ilen)
dim s
Randomize

iSecond=cint(rnd()*100+datepart("s",now()))
iMinute=cint(rnd()*100+datepart("n",now()))
iHour=cint(rnd()*100+datepart("h",now()))

s=""

if len(iSecond)<2 then
s=s&"0"&iSecond
else
s=s&iSecond
end if

if len(iMinute)<2 then
s=s&"0"&iMinute
else
s=s&iMinute
end if

if len(iHour)<2 then
s=s&"0"&iHour
else
s=s&iHour
end if

GetRandomNum=left(s,ilen)
end function

function WriteCheckCode(sNum)
Dim url
url="http://......../CheckCode.aspx?id="&sNum&""

Dim http
set http = Server.CreateObject("Microsoft.XMLHTTP")
http.Open "GET", url, false
http.Send
Response.ContentType = "image/gif"
Response.BinaryWrite http.responseBody
Response.Flush
set http = nothing
end function

sNum=GetRandomNum(5)
session("UserCheckNum")=sNum
WriteCheckNum(sNum)

代码中的GetRandomNum函数的作用是自动生成随机数字,而WriteCheckCode函数的作用是将生成的验证码图片输出到网页上。

二、验证码图片的生成(CheckCode.aspx 代码)
代码如下:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Imaging;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace WebUtils
{
public partial class WebForm : System.Web.UI.Page
{
protected void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
}

#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
DrawNumber();
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
}
#endregion

public void DrawNumber()
{
string auth_id = Request.QueryString["id"];
if(auth_id == null) auth_id = "";
Bitmap bmp = new Bitmap(60, 20);
Graphics g = Graphics.FromImage(bmp);
g.FillRectangle(Brushes.CadetBlue, 0, 0, bmp.Width, bmp.Height);
g.DrawString(auth_id, new Font("宋体", 15), Brushes.White, new RectangleF(new PointF(0, 0), new SizeF(bmp.Width, bmp.Height)));
Response.ContentType = "image/gif";
bmp.Save(Response.OutputStream, ImageFormat.Gif);
g.Dispose();
bmp.Dispose();
}
}
}

本段代码中的函数DrawNumber的作用是将随机生成的数字串嵌入图片中,生成验证码图片。

利用以上两部分代码,即可实现生成验证码的工作,有兴趣的读者可以在你们的网站服务器上测试一下。当然您也可以修改其中的部分代码,使得验证码看上去更加美观和复杂,如获取随机数字的部分,您可以修改为字母和数字结合的方式,图片的背景图案可以修改为花色的,这样的验证码更能给人以专业的感觉。

本站优惠活动图片



业务联系方式图片


本页页脚banner图片

咨询热线:0371-53778175,15333818157    业务QQ:业务联系QQ图标1765879842   业务联系QQ图标2632505191   业务联系QQ图标2236519391

版权所有:郑州凯讯通信科技有限公司    备案号:豫ICP备11027744号-2