0

验证码中通常会显示一个单词,用户只需输入该单词即可验证验证码。但在这种情况下,我想要的是我的验证码将包含一个口号(即一个句子),并且每次计算机都会询问...输入口号中的第一个单词..下次它询问时,输入第三个词等等随机......谁能告诉我这个是怎么回事?

4

1 回答 1

0

以下是我过去在 Classic ASP 中创建验证码的方式。当表单显示给用户时,我会生成一个随机数以及一个问题和答案。

随机数用作存储问题答案的会话变量的名称。我还添加了一个带有随机数值的隐藏字段。这个随机数允许一个用户在不同的窗口/选项卡中显示多个表单,而无需使用相同的会话变量。这也意味着任何试图破解该页面的人都必须先检索该页面,然后才能将其发布到该页面,这样就更难破解了。

当用户提交表单时,我得到隐藏字段值,然后得到存储在会话变量中的答案,并且会话变量被删除,因此'机器人无法多次尝试猜测答案。然后可以将用户的答案与用户输入的内容进行比较。如果他们不正确,则再次显示表单,并生成新的随机数和答案。

生成表单时的代码将是这样的:

'get your question and answer
strQuestion = "My question"
strAnswer = "answer"

Randomize
strVarName = Int((999999 - 100000 + 1) * Rnd() + 100000)
Session(strVarName) = strAnswer



<input type="hidden" name="varname" value="<%= strVarName %>" />

提交表单时的代码可能是这样的:

strVarName = Request.Form("varname")
strUserAnswer = Request.Form("answer")
strRealAnswer = Session(strVarName)
Session.Items.Remove(strVarName)

If strUserAnswer <> strRealAnswer Then
    'invalid response
    'show form again with new answer and session
End If
于 2012-10-26T03:20:21.820 回答