4.2.2 随机数字验证的具体实现(1)
开发随机验证模块时,首先需要一个显示随机数字验证码的界面,然后调用显示验证码的方法,最后将用户输入的验证码与实际生成的验证码进行比对,如果相同则通过验证,否则将不通过验证。用户开发随机数字验证码模块的实现方法如下所示。
1.设计验证页面
设计随机数字验证页面可按照下面的操作步骤来进行。
(1)新建一个网站,在网站中添加一个名称为UserLogins的Web窗体。
(2)在窗体上首先添加一个具有1行1列的表格,在该表格中再添加一个具有4行2列的表格。分别在表格的相应单元格中输入字符标签、添加文本框控件和按钮控件。
(3)在表格中再添加一个标签控件,用于显示生成的随机数字验证码。
(4)设置标签控件的背景颜色和字体颜色,以此来设置随机数字验证码的显示样式,其实现的HTML代码如下:
设计完成后的用户随机数字验证页面,如图4.3所示。
- <asp:Label ID="Label1" runat="server" Text="Label"
- BackColor="#97DFF4" <!--设置标签控件的背景颜色-->
- ForeColor="#CC0000" <!--设置标签控件的字体颜色-->
- Font-Size="12pt"> <!--设置标签控件的字体大小-->
- </asp:Label>
图4.3 随机数字验证码的设计页面 |
说明:除了在用户登录页面中可以应用验证码之外,在论坛登录、用户注册和客户留言等页面中,也会应用到验证码,辅助用户完成登录网站或留言等一些相关的操作。
2.设计生成随机数字验证的方法
在设计完随机数字验证码的页面之后,就可以创建生成随机数字验证码的方法了。在UserLogins窗体的代码窗口中,输入如下程序代码,用于生成随机数字验证码。
- /// <summary>
- /// 随机生成4位数
- /// </summary>
- /// <returns>返回生成的随机数</returns>
- public string GetVali()
- {
- string strsvali = "0,1,2,3,4,5,6,7,8,9"; //定义一个字符串
- string[] ValiArray = strsvali.Split(','); //定义一个字符数组
- string ReturnNum = ""; //定义一个返回验证码的字符串
- //记录随机数,避免产生同样的随机数
- int nums = -1;
- //确保产生不同的随机数
- Random vrand = new Random(); //声明一个Random对象
- for (int n = 1; n < 5; n++)
- {
- if (nums != -1)
- {
- vrand =new Random(n*nums *unchecked((int)DateTime.Now.Ticks));
- }
- int t = vrand.Next(10); //由Next()方法获取随机数
- nums = t;
- ReturnNum += ValiArray[t]; //生成随机数
- }
- Session["Valid"] = ReturnNum;
- return ReturnNum; //返回生成的随机数
- }
【代码解析】通过Random对象与for循环语句相结合的方法产生随机数。
3.实现验证功能
创建完生成随机数字验证码的方法之后,在网页的Page_Load事件中添加显示生成验证码的程序,代码如下:
- protected void Page_Load(object sender, EventArgs e)
- {
- //非页面返回时,生成随机数
- if (!Page.IsPostBack)
- {
- string getnums = GetVali(); //获取随机数
- Label1.Text = getnums; //在标签控件中显示随机数
- }
- }
随机数字验证的具体实现(2)
【代码解析】代码中通过调用GetVall()方法,来实现获取随机验证码的功能。
在用户输入显示的验证码后,需要验证用户输入的验证码是否正确,验证方法如下面的代码所示。
- protected void Button1_Click(object sender, EventArgs e)
- {
- //判断获得的验证码与用户输入的验证码是否一致
- if (Session["Valid"].ToString() == TextBox3.Text)
- {
- this.Page.RegisterStartupScript("ss", "<script>alert('您已经成功通过
- 登录验证!')</script>");
- }
- else
- {
- this.Page.RegisterStartupScript("ss", "<script>alert('您输入的验证码
- 错误!')</script>");
- }
- }
【代码解析】在验证页面上显示验证码之后,用户可以将显示生成的随机数字验证码输入到"验证码"文本框中,然后通过单击"提交"按钮将输入信息提交到服务器端进行比对。如果正确则提示"您已经成功通过登录验证"的提示信息,否则将提示"您输入的验证码错误"的提示信息。
4.随机数字验证的实现效果
在设计完随机数字验证模块之后,再来看随机数字验证的实现效果。
将Web窗体的UserLogins设置成起始页之后,运行程序,输入用户名、密码和验证码信息之后,单击"提交"按钮,此时如果输入的验证码信息正确,将会弹出"您已经成功通过登录验证"的提示信息,如图4.4所示;如果输入的验证码错误,则弹出"您输入的验证码错误"的提示信息,如图4.5所示。
注意:这里生成的随机数字验证码是最简单的验证码,就是通常所说的4位数字验证码,其验证作用比较小,安全防范的系数也比较低。
图4.4 输入正确的验证码 |
图4.5 输入错误的验证码 |