-4

所以,我基本上是在制作一个忘记密码页面的网站。我想添加一个验证码系统。现在,我不想要任何不能在 5 分钟内完成的东西,只要让它简短而简单。我想对我的表格进行验证。我想要的是一个在没有图像的情况下生成和显示的随机数。那么,我该怎么做呢?我之前尝试过制作验证码系统,但是每当我在表单中提交内容时,随机数都会发生变化。

4

3 回答 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

超级简单的答案:

  1. 加载表单页面时,创建一个会话 ( session_start())
  2. 生成一个随机数并将其保存到会话变量中:$_SESSION['captcha']=[random_number]
  3. 根据会话字符串创建图像(您需要GD或类似的库)。只需让它创建一个图像并根据 的值在其上打印一个文本字符串$_SESSION['captcha']。如果您想变得花哨,请尝试切换字体、颜色和旋转字母。请记住,会话变量存储在服务器上的临时文件(或 DB)中,因此它们可用于包含会话的每个文件)
  4. 有一个验证码字段供用户填写<input type='text' name='captcha_field' />
  5. 提交时,比较$_POST['captcha_field'] to $_SESSION['captcha']. 如果它们相同,则继续,否则强制他们重新填写验证码字段。
于 2013-02-11T01:47:15.083 回答
0

您可以将随机数存储在会话变量中 - 即$_SESSION['captcha_code']并检查该值。此值是用户特定的,不会因多个请求而改变。有关详细信息,请参阅会话处理

于 2013-02-11T01:48:26.713 回答