需要一些帮助来添加一些验证码联系表格

时间:2012-07-12 08:48:44

标签: php forms security captcha contact

您好我是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位数匹配。

任何帮助都将不胜感激。

3 个答案:

答案 0 :(得分:5)

简单的PHP Captcha

这是您将使用的最简单的CAPTCHA脚本之一。虽然它不会模糊文本,但它很适合需要低级别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/

答案 1 :(得分:3)

您也可以使用此:Securimage

Securimage是一个免费的开源PHP CAPTCHA脚本,用于生成复杂的图像和CAPTCHA代码,以保护表单免受垃圾邮件和滥用。它可以轻松添加到您网站上的现有表单中,以防止垃圾邮件机器人。只要您安装了PHP,并且在PHP中支持GD,它就可以在大多数任何Web服务器上运行。 Securimage可以完成从生成CAPTCHA图像到验证类型化代码的所有内容。可听代码可以通过Flash流式传输到浏览器,用于视障人士。

答案 2 :(得分:-1)

这是我很久以前发现的简单数学类型的东西 的优点:
- 没有图像,所以带宽使用量减少 - 没有外部依赖。

流程

form.php

  1. 选择一个随机数$n1
  2. 选择另一个随机数$n2
  3. 计算$n1&amp;具有各种数学运算的$n2并将其存储为$result,以使补救措施编号无法预测。未与$n1+$n2
  4. 对齐
  5. 回声“什么是$n1 + $n2?”
  6. 要求用户输入步骤4中提出的问题的答案。
  7. 在表单中添加$result作为隐藏值。
  8. 在提交时,$_POST值由check.php处理。
  9. check.php

    1. 如果设置了$_POST["answer"],请将其存储在$answer
    2. 以与$answer
    3. 步骤3中计算方式相同的方式计算form.php
    4. 现在,如果$answer等于$_POST["result"],则会验证用户是否为人。
    5. 请注意,$answer是用户提交的答案&amp; $result是我在$answer上进行数学运算后的结果。

      <强> CODE:

      文件: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

      关键在于编码&amp;解码公式更难。因此,有人在查看hidden form value resultQuestion时,不应找出两者之间的关系。