【问题标题】:How can I make an extremely basic php captcha [closed]我怎样才能制作一个非常基本的 php 验证码 [关闭]
【发布时间】:2013-01-26 02:51:44
【问题描述】:

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

【问题讨论】:

标签: php random numbers captcha


【解决方案1】:

你可以让用户做一个简单的加法问题。它将阻止大多数自动提交。

它的基本原理是这样的:

$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>";

【讨论】:

    【解决方案2】:

    超级简单的答案:

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

    【讨论】:

    • $_SESSION['captcha'] 需要是一个数组,因为如果用户打开多个页面并提交任何以前的页面(不是最后一页),它将无效。我已经用令牌尝试过了,它只接受打开的最后一页,因为它替换了旧值并创建了一个数组,我解决了我的问题。
    • @Class - 不错的主意
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2015-05-08
      • 1970-01-01
      • 2011-08-22
      • 2013-09-06
      • 2016-02-27
      • 1970-01-01
      • 1970-01-01
      • 2013-03-22
      • 1970-01-01
      相关资源
      最近更新 更多