随机数字验证的具体实现

4.2.2  随机数字验证的具体实现(1)

开发随机验证模块时,首先需要一个显示随机数字验证码的界面,然后调用显示验证码的方法,最后将用户输入的验证码与实际生成的验证码进行比对,如果相同则通过验证,否则将不通过验证。用户开发随机数字验证码模块的实现方法如下所示。

1.设计验证页面

设计随机数字验证页面可按照下面的操作步骤来进行。

(1)新建一个网站,在网站中添加一个名称为UserLogins的Web窗体。

(2)在窗体上首先添加一个具有1行1列的表格,在该表格中再添加一个具有4行2列的表格。分别在表格的相应单元格中输入字符标签、添加文本框控件和按钮控件。

(3)在表格中再添加一个标签控件,用于显示生成的随机数字验证码。

(4)设置标签控件的背景颜色和字体颜色,以此来设置随机数字验证码的显示样式,其实现的HTML代码如下:

 
 
  1. <asp:Label ID="Label1" runat="server" Text="Label"   
  2.     BackColor="#97DFF4"                 <!--设置标签控件的背景颜色--> 
  3.     ForeColor="#CC0000"                 <!--设置标签控件的字体颜色--> 
  4.     Font-Size="12pt">                   <!--设置标签控件的字体大小--> 
  5. </asp:Label> 

设计完成后的用户随机数字验证页面,如图4.3所示。
 
图4.3  随机数字验证码的设计页面

说明:除了在用户登录页面中可以应用验证码之外,在论坛登录、用户注册和客户留言等页面中,也会应用到验证码,辅助用户完成登录网站或留言等一些相关的操作。

2.设计生成随机数字验证的方法

在设计完随机数字验证码的页面之后,就可以创建生成随机数字验证码的方法了。在UserLogins窗体的代码窗口中,输入如下程序代码,用于生成随机数字验证码。

 

 
 
  1. /// <summary> 
  2. /// 随机生成4位数  
  3. /// </summary> 
  4. /// <returns>返回生成的随机数</returns> 
  5. public string GetVali()  
  6. {  
  7.     string strsvali = "0,1,2,3,4,5,6,7,8,9";    //定义一个字符串  
  8.     string[] ValiArray = strsvali.Split(',');   //定义一个字符数组  
  9.     string ReturnNum = "";                          //定义一个返回验证码的字符串  
  10.     //记录随机数,避免产生同样的随机数  
  11.     int nums = -1;  
  12.     //确保产生不同的随机数  
  13.     Random vrand = new Random();                //声明一个Random对象  
  14.     for (int n = 1; n < 5; n++)  
  15.     {  
  16.       if (nums != -1)  
  17.         {  
  18.             vrand =new Random(n*nums *unchecked((int)DateTime.Now.Ticks));  
  19.         }  
  20.         int t = vrand.Next(10);                     //由Next()方法获取随机数  
  21.         nums = t;  
  22.         ReturnNum += ValiArray[t];                  //生成随机数  
  23.     }  
  24.     Session["Valid"] = ReturnNum;  
  25.      return ReturnNum;                              //返回生成的随机数  
  26. }  

【代码解析】通过Random对象与for循环语句相结合的方法产生随机数。

 

 

3.实现验证功能

创建完生成随机数字验证码的方法之后,在网页的Page_Load事件中添加显示生成验证码的程序,代码如下:

 
 
  1. protected void Page_Load(object sender, EventArgs e)  
  2. {  
  3.    //非页面返回时,生成随机数  
  4.    if (!Page.IsPostBack)  
  5.    {  
  6.         string getnums = GetVali();         //获取随机数  
  7.         Label1.Text = getnums;                  //在标签控件中显示随机数  
  8.    }  
  9. }  

随机数字验证的具体实现(2)

【代码解析】代码中通过调用GetVall()方法,来实现获取随机验证码的功能。

在用户输入显示的验证码后,需要验证用户输入的验证码是否正确,验证方法如下面的代码所示。

 
 
  1. protected void Button1_Click(object sender, EventArgs e)  
  2. {  
  3.     //判断获得的验证码与用户输入的验证码是否一致  
  4.     if (Session["Valid"].ToString() == TextBox3.Text)  
  5.     {  
  6.         this.Page.RegisterStartupScript("ss", "<script>alert('您已经成功通过  
  7.         登录验证!')</script>");  
  8.     }  
  9.     else  
  10.     {  
  11.        this.Page.RegisterStartupScript("ss", "<script>alert('您输入的验证码  
  12.        错误!')</script>");  
  13.     }  
  14. }  

【代码解析】在验证页面上显示验证码之后,用户可以将显示生成的随机数字验证码输入到"验证码"文本框中,然后通过单击"提交"按钮将输入信息提交到服务器端进行比对。如果正确则提示"您已经成功通过登录验证"的提示信息,否则将提示"您输入的验证码错误"的提示信息。

4.随机数字验证的实现效果

在设计完随机数字验证模块之后,再来看随机数字验证的实现效果。

将Web窗体的UserLogins设置成起始页之后,运行程序,输入用户名、密码和验证码信息之后,单击"提交"按钮,此时如果输入的验证码信息正确,将会弹出"您已经成功通过登录验证"的提示信息,如图4.4所示;如果输入的验证码错误,则弹出"您输入的验证码错误"的提示信息,如图4.5所示。

注意:这里生成的随机数字验证码是最简单的验证码,就是通常所说的4位数字验证码,其验证作用比较小,安全防范的系数也比较低。

 
图4.4  输入正确的验证码
 
图4.5  输入错误的验证码
注意:3中的提交表示:script

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值