登录表单加验证码能有效拦截大部分机器提交。图片验证码实现较重,经典 ASP 里可以先从文本验证码做起:生成随机码写入 Session,提交页面做比对,思路与图片验证码完全一致。

完整代码(生成页)

<%@ Language="VBScript" CodePage=65001 %>
<%
Option Explicit
Randomize
Dim code, i
code = ""
For i = 1 To 4
    Rem 0-9 数字验证码
    code = code & Chr(48 + Int(Rnd * 10))
Next
Session("captcha_code") = code
Response.Write "本次验证码:" & code
%>

完整代码(校验逻辑)

<%
If LCase(Request("vcode")) = LCase(Session("captcha_code")) Then
    Response.Write "验证通过"
Else
    Response.Write "验证码错误或已过期"
End If
%>

使用说明

  • 生成页每次访问都会刷新 Session 值,配合刷新按钮即可做到一码一用;
  • 比对用 LCase 统一小写,避免用户输入大小写带来的误判;
  • 正式项目建议 Session 里同时存过期时间,超过 60 秒强制失效。

小结

文本验证码先跑通校验链路,之后把数字随机串换成随机字符并绘制到图片上,即可平滑升级为图形验证码。