需要一些帮助来添加一些captcha联系表格


need some help to add some captcha contact form

嗨,我是PHP新手,我想得到一些帮助。我已经创建了一个联系表格,我想添加一些captcha。我已经创建了一些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位数字匹配。

如有任何帮助,我们将不胜感激。

简单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/

您也可以使用这个:Securimage

Securimage是一个开源的免费PHP CAPTCHA脚本,用于生成复杂的图像和CAPTCHA代码,以保护表单免受垃圾邮件和滥用。它可以很容易地添加到您网站上的现有表单中,以提供免受垃圾邮件机器人攻击的保护。它可以在大多数任何Web服务器上运行,只要你安装了PHP,并且在PHP中支持GD。Securimage可以执行从生成CAPTCHA图像到验证键入的代码的所有操作。对于视力受损的人,可以使用Flash将音频代码流式传输到浏览器。

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

流程

form.php:中

  1. 选择一个随机数$n1
  2. 选择另一个随机数$n2
  3. 计算$n1&$n2用各种数学运算并将其存储为$result,从而使再补给数是不可预测的&与$n1+$n2不对齐
  4. Echo"什么是$n1+$n2?"
  5. 要求用户输入步骤4中提出的问题的答案
  6. 在表单中添加$result作为隐藏值
  7. 提交时,$_POST值由check.php处理

check.php:中

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

请记住,CCD_ 20是用户提交的答案&CCD_ 21是我们对CCD_ 22进行数学运算后的结果。

代码:

文件: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="answerswer" type="text"><br />
<input type="hidden" name="result" value="<?php echo $result; ?>">
</form>

文件:check.php

<?php
if(isset($_POST["answerswer")){
    $answer = $_POST["answerswer"];
    // 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";
    }

逻辑实现http://codepad.org/2MtULNhZ

关键在于使编码&解码公式更加困难。因此,观察hidden form valueresultQuestion的人不应该发现它们之间的关系。