所以,我基本上是在制作一个忘记密码页面的网站。我想添加一个验证码系统。现在,我不想要任何不能在 5 分钟内完成的东西,只要让它简短而简单。我想对我的表格进行验证。我想要的是一个在没有图像的情况下生成和显示的随机数。那么,我该怎么做呢?我之前尝试过制作验证码系统,但是每当我在表单中提交内容时,随机数都会发生变化。
问问题
1627 次
3 回答
2
你可以让用户做一个简单的加法问题。它将阻止大多数自动提交。
它的基础是这样的:
$a = rand(1,10);
$b = rand(1,10);
$c = $a + $b; //throw this into a session var and check submission against it
echo "<p>$a + $b = <input type='text'/></p>";
于 2013-02-11T01:47:03.210 回答
1
超级简单的答案:
- 加载表单页面时,创建一个会话 (
session_start()
) - 生成一个随机数并将其保存到会话变量中:
$_SESSION['captcha']=[random_number]
- 根据会话字符串创建图像(您需要
GD
或类似的库)。只需让它创建一个图像并根据 的值在其上打印一个文本字符串$_SESSION['captcha']
。如果您想变得花哨,请尝试切换字体、颜色和旋转字母。请记住,会话变量存储在服务器上的临时文件(或 DB)中,因此它们可用于包含会话的每个文件) - 有一个验证码字段供用户填写
<input type='text' name='captcha_field' />
- 提交时,比较
$_POST['captcha_field'] to $_SESSION['captcha']
. 如果它们相同,则继续,否则强制他们重新填写验证码字段。
于 2013-02-11T01:47:15.083 回答
0
您可以将随机数存储在会话变量中 - 即$_SESSION['captcha_code']
并检查该值。此值是用户特定的,不会因多个请求而改变。有关详细信息,请参阅会话处理。
于 2013-02-11T01:48:26.713 回答