【发布时间】:2011-04-13 21:20:03
【问题描述】:
我正在尝试在我正在构建的表单中实现一个简单的验证码,但我遇到了一个我自己似乎无法解决的问题。
我正在使用简单的代码来生成一个像这样的随机数......
$randomnr = rand(1000, 9999);
$_SESSION['randomnr2'] = md5($randomnr);
....然后是更多代码来生成随机数的图像并将其显示在页面上。我反对这样的有效性....
if (strlen($captcha) !== ($_SESSION['randomnr2'])) {
$error['captcha'] = "CAPTCHA error. Please try again";
}
如何检查输入到验证码输入字段的值与存储在会话randomnr2 中的随机数?
【问题讨论】:
-
呜呜呜呜!这不是验证码的工作方式。您不检查长度,而是检查两个字符串的实际内容。至于你的第二个问题,没有 id="captch" 有一个 ,最好是他输入的输入字段来填写验证码。
-
您正在对存储在会话中的 $randomnr 的值进行哈希处理...您还应该对 $captcha 的值进行哈希处理并比较两个哈希值
-
@Khez - 是的,很抱歉。这不是我应该检查的长度 - 这是内容:) 谢谢。从下面的答案中,我看到我应该改用“int”。输入字段有两个术语 。谢谢你的回复:)
-
@Mark 感谢您的回复。这很有意义。你能向我解释一下如何对输入字段的值进行哈希处理吗?
-
@Mark @Jerry 如果我正确理解您在验证码中显示的应用程序哈希,这意味着不需要重新哈希用户输入。附言md5 是一个很长的验证码。