【问题标题】:need some help to add some captcha contact form需要一些帮助来添加一些验证码联系表
【发布时间】:2012-07-11 23:38:42
【问题描述】:

您好,我是 PHP 新手,需要一些帮助。 我创建了一个联系表格,我想添加一些验证码。我创建了一些 gif 图像,其中添加了一些噪声的数字,并将 no1 命名为 code_01.gif,将 no2 命名为 code_02.gif 等。我将其中一些静态地放在我的表单上,用于这样的显示目的:

<img src="images/code_01.gif" />
<img src="images/code_07.gif" />
<img src="images/code_01.gif" />
<img src="images/code_08.gif" />
<img src="images/code_03.gif" />
<img src="images/code_07.gif" />
<input name="captcha" type="text" id="captcha" />

我想添加一些功能以每次随机显示图像代码,并检查输入是否与显示的 6 位数字匹配。

任何帮助将不胜感激。

【问题讨论】:

  • 你用谷歌搜索过验证码吗?以及如何创建它们?
  • @Lykos22 看看我的回答,看看好不好?

标签: php forms security captcha contact


【解决方案1】:

简单的 PHP 验证码

这是您将使用的最简单的验证码脚本之一。虽然它不会掩盖文本,但对于许多需要低级 CAPTCHA 解决方案的人来说,它将很好地发挥其作用。此脚本几乎不需要设置。唯一的依赖是 PHP GD 库。

使用起来可以这么简单,但也可以配置:

<?php

session_start();
include("captcha.php");
$_SESSION['captcha'] = captcha();

echo '<img src="' . $_SESSION['captcha']['image_src'] . '" alt="CAPTCHA" />';

?>

演示:http://labs.abeautifulsite.net/simple-php-captcha/

【讨论】:

    【解决方案2】:

    你也可以使用这个:Securimage

    Securimage 是一个开源的免费 PHP CAPTCHA 脚本,用于生成复杂的图像和 CAPTCHA 代码,以保护表单免受垃圾邮件和滥用。它可以很容易地添加到您网站上的现有表单中,以提供对垃圾邮件机器人的保护。只要您安装了 PHP,它就可以在大多数网络服务器上运行,并且 PHP 中支持 GD。 Securimage 可以完成从生成 CAPTCHA 图像到验证输入代码的所有工作。有声代码可以通过 Flash 流式传输到具有视力障碍者的浏览器。

    【讨论】:

      【解决方案3】:

      这是我很久以前发现的一个简单数学验证码类型的东西。
      优点:
      - 没有图像,因此带宽使用量更少。
      - 没有外部依赖。

      流程

      form.php:

      1. 随机选择一个数字$n1
      2. 选择另一个随机数$n2
      3. 用各种数学运算计算$n1 & $n2 并将其存储为$result,因此结果数是不可预测的并且与$n1+$n2 不一致
      4. 回显“$n1 + $n2 是什么?”
      5. 要求用户输入第 4 步中提出的问题的答案。
      6. 在表单中添加 $result 作为隐藏值。
      7. 提交时,$_POST 值由check.php 处理。

      check.php:

      1. 如果设置了$_POST["answer"],则将其存储在$answer
      2. 以与form.php 的步骤 3 中相同的方式计算 $answer
      3. 现在,如果$answer 等于$_POST["result"],则验证用户是人类。

      请记住,$answer 是用户提交的答案,$result 是我们对$answer 进行数学运算后的结果。

      代码:

      文件:form.php

      <?php
      
      $n1 = rand(1,15);
      $n2 = rand(1,15);
      //start making our result unpredictable & non-aligned with hidden value
      $result = $n1+$n2;
      $result = ($result*3)-2;
      $result = ($result+4)*5;
      $question="what is $n1 + $n2?";
      ?>
      <form method="post" action="check.php">
      <?php echo $question.PHP_EOL; ?>
      <input name="answer" type="text"><br />
      <input type="hidden" name="result" value="<?php echo $result; ?>">
      </form>
      

      文件:check.php

      <?php
      
      if(isset($_POST["answer")){
          $answer = $_POST["answer"];
          // start doing same math on $answer
          $answer = ($answer*3)-2;
          $answer = ($answer+4)*5;
          if($answer == $_POST["result"]{
              // echo Hurray, you are Human..
              // Do anything here.. 
          }else{
              echo "Wrong Answer";
          }
      

      Logic Implementation at http://codepad.org/2MtULNhZ

      关键在于使编码和解码公式更难。因此,查看hidden form value resultQuestion 的人不应该找出它们之间的关系。

      【讨论】:

      • 请检查您的答案,因为它充满了错误。我将进行编辑以更正语法错误,但是我看不出这是如何工作的。如果我只是创建一个机器人,它从 HTML 中读取“什么是”之后的两个数字并提交它们的总和呢?!
      • @DanielSzalay 我在回答中强调了“简单”一词。这只是一项基本技术。顺便说一句,我没有看到任何语法错误。我将在我的答案中添加一个流程。使破解变得更难,然后破解更难破解的过程是一场老鼠与猫的游戏。因此,如果您创建一个机器人从 HTML 中读取“是什么”之后的两个数字,则可以只使用数字图像而不是纯文本中的数字。然后您可以找到其他方法,因此该过程将继续..
      猜你喜欢
      • 2011-03-25
      • 1970-01-01
      • 2018-12-18
      • 2014-12-23
      • 2011-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-17
      相关资源
      最近更新 更多