CAPTCHA 是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是计算机和人的公共全自动程序。CAPTCHA目前广泛用于网站的留言板,许多留言板为防止有人利用计算机程式大量在留言板上张贴广告或其他垃圾讯息,因此会放置CAPTCHA要求留言者必需输入图片上所显示的文数字或是算术题才可完成留言。
虽然自己动手写一个简单的CAPTCHA程序也不是很难,但是这里要介绍的如何使用reCATPCHA。reCAPTCHA计划的主要目的是利用CAPTCHA技术来帮助典籍数字化的进行,这个计划将由书本扫描下来无法准确的被光学文字辨识技术识别的文字显示在CAPTCHA 问题中,让人类在回答CAPTCHA问题时用人脑加以识别。为了验证人类所输入的文字是正确的,而不是随意输入,每次有两个字会被显示出来;一个是光学文字辨识软件无法辨别的字,另一个是一个已经知道正确答案的字。如果使用者正确的回答出已知正确答案的字,那么就假设所输入的另一个光学辨识软件无法辨识的字是认真的检视后被输入而非随便输入。因此,每一次有效的验证也是对reCAPTCHA计划的贡献。
(以上文字大部分摘自wiki)
要把reCAPTCHA加到你的网站里很简单,reCAPTCHA提供适合于多种程序语言的接口,这里要介绍的reCAPTCHA PHP库的运用。
- 首先到reCAPTCHA网站上获取API Key,这需要注册,但是是完全免费的。
- 然后下载reCAPTCHA PHP库。
- 最后调用库函数。下面提供示例,通常这些代码是加在表单(form)里,你需要根据实际情况修改,如有问题请留言。
<?php
require_once('recaptchalib.php');
$publickey = "注册后你将得到这个key";
$privatekey = "注册后你将得到这个key";
# the response from reCAPTCHA
$resp = null;
# the error code from reCAPTCHA, if any
$error = null;
$switch = 0;
# are we submitting the page?
if ($_POST["submit"]) {
$resp = recaptcha_check_answer ($privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);
if ($resp->is_valid) {
$switch = 1;
} else {
$switch = 2;
$error = $resp->error;
}
}
?>
<form name="validation" enctype="multipart/form-data" action="" method="post">
<!--下面的javascript变量可以控制图片的主题外观,当然这是可选的-->
<script>
var RecaptchaOptions = {
theme : 'clean',
tabindex : 2
};
</script>
<?php
if ($switch == 0){
echo '有空?给reCAPTCHA项目贡献几个字吧:-)';
//你可以把表单内容放在这里
}
elseif ($switch == 2){
echo '你是机器人?不是的话,请再输一次。';
}
else{
echo '谢谢你对reCAPTCHA的支持';
//这里加入表单提交成功后的提示信息
}
//下面是重要的recaptcha函数,调用captcha的图片
echo recaptcha_get_html($publickey, $error);
?>
//这里可以加入其他表单信息
<input type="submit" name="submit" value="submit" />
</form>
下面我用iframe把reCAPTCHA加入这个帖子里,这个表单不传递其它信息,仅供网友测试,同时给reCAPTCHA做点贡献。:-)
reCAPTCHA - 一个帮你帮我的项目,不是吗?
标签: PHP, PHP实用代码系列