Captcha官方
http://www.captcha.ru/en/
Captcha下载
http://www.captcha.ru/en/kcaptcha/
本地下载1.2.6版本
首先可以使用如下程序得到验证码图片,注意在程序在生成图片时就调设置了会话变量。
getImage.php
include('kcaptcha.php');
session_start();
$captcha = new KCAPTCHA();
$_SESSION['captcha_keystring'] = $captcha->getKeyString();
?>
接下来通过如下的表单调用验证码图片,并验证用户输入是否与验证码图片值相符。
index.php
session_start();
$true_key_string = $_SESSION['captcha_keystring'];
echo $true_key_string;
?>
if(isset($_SESSION['captcha_keystring']) && $true_key_string == $_POST['keystring'])
{
echo "Correct";
}else
{
echo "Wrong";
}
?>
那么,如何在Cakephp中使用Captcha呢?
首先把Kcaptcha文件夹拷贝到vendor目录。因为验证码要在很多控制器中使用,因此最好把该项功能用组件进行封装,该组件包括生成图片和验证两项功能。在controllers/components目录下新建captcha.php文件。
class CaptchaComponent extends Object {
var $Controller = null;
function startup(&$controller)
{
$this->Controller = $controller;
}
function render()
{
App::import('vendor', 'kcaptcha/kcaptcha');
$kcaptcha = new KCAPTCHA();
$this->Controller->Session->write('captcha', $kcaptcha->getKeyString());
exit;
}
function checkCaptcha($str)
{
if ($this->Controller->Session->check('captcha'))
{
$s_captcha = $this->Controller->Session->read('captcha');
if(!empty($str) && $str == $s_captcha)
{
return true;
}
}
return false;
}
}
?>
接下来,为了能在视图中调用验证码图片,可以在控制器(比如Users控制器)中加入Captcha组件。或者单独创建一个Captchas控制器来生成验证码图片。
class CaptchasController extends AppController {
var $name = 'Captchas';
var $uses = array();
var $components = array('Captcha');
var $helps = array('Cache');
var $cacheAction = true;
function index() {
Configure::write('debug', '0');
$this->autoRender = false;
$this->Captcha->render();
}
}
?>