您好我是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位数匹配。
任何帮助都将不胜感激。
答案 0 :(得分:5)
这是您将使用的最简单的CAPTCHA脚本之一。虽然它不会模糊文本,但它很适合需要低级别CAPTCHA解决方案的许多人。此脚本几乎不需要设置。唯一的依赖是PHP GD库。
使用它可以很简单,但它也是可配置的:
<?php
session_start();
include("captcha.php");
$_SESSION['captcha'] = captcha();
echo '<img src="' . $_SESSION['captcha']['image_src'] . '" alt="CAPTCHA" />';
?>
答案 1 :(得分:3)
您也可以使用此:Securimage
Securimage是一个免费的开源PHP CAPTCHA脚本,用于生成复杂的图像和CAPTCHA代码,以保护表单免受垃圾邮件和滥用。它可以轻松添加到您网站上的现有表单中,以防止垃圾邮件机器人。只要您安装了PHP,并且在PHP中支持GD,它就可以在大多数任何Web服务器上运行。 Securimage可以完成从生成CAPTCHA图像到验证类型化代码的所有内容。可听代码可以通过Flash流式传输到浏览器,用于视障人士。
答案 2 :(得分:-1)
这是我很久以前发现的简单数学类型的东西
的优点:强>
- 没有图像,所以带宽使用量减少
- 没有外部依赖。
流程
在form.php
:
$n1
$n2
$n1
&amp;具有各种数学运算的$n2
并将其存储为$result
,以使补救措施编号无法预测。未与$n1+$n2
$n1
+ $n2
?”$result
作为隐藏值。$_POST
值由check.php
处理。在check.php
:
$_POST["answer"]
,请将其存储在$answer
$answer
form.php
$answer
等于$_POST["result"]
,则会验证用户是否为人。请注意,$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
result
和Question
时,不应找出两者之间的关系。