Cakephp中使用Captcha實現更加安全的驗證碼

Captcha官方php

http://www.captcha.ru/en/html

Captcha下載安全

http://www.captcha.ru/en/kcaptcha/session

使用Captcha能夠實現安全的驗證碼功能,Captcha提供了多種風格和樣式的風格好比app

image

使用方法超級簡單框架

 

getImage.phpoop

1. <?php
2. session_start();
3. include('kcaptcha.php');
4. $captcha = new KCAPTCHA();
5. ?>

index.phpthis

1. <html>
2. <body>
3. <img src="getImage.php" />
4. </body>
5. </html>

Captcha會自動在Session中設置一個值來保存已經生成的驗證碼,要判斷驗證碼是否正確,能夠這樣作:spa

1. //Captche會自動在Session中存儲一個名爲captcha_keystring的字符串
2. //只要驗證一下提交的驗證碼是否和它相等就OK了
3.  
4. if(isset($_SESSION['captcha_keystring']) && $_SESSION['captcha_keystring'] == $_POST['keystring']){
5.     echo "Correct";
6. }else{
7.     echo "Wrong";
8. }

那麼,如何在Cakephp中使用Captcha呢?debug

介紹一下, Yoophi 在Cakephp經過組件方式使用Captcha的方法

將kcaptcha文件夾拷貝到vendors目錄

image

在components中寫一個新的組件

image

代碼以下:

01. <?php
02. class CaptchaComponent extends Object {
03.     var $Controller = null;
04.  
05.     function startup(&$controller)
06.     {
07.         $this->Controller = $controller;
08.     }
09.  
10.     function render()
11.     {
12.         App::import('vendor', 'kcaptcha/kcaptcha');
13.         $kcaptcha = new KCAPTCHA();
14.         $this->Controller->Session->write('captcha', $kcaptcha->getKeyString());
15.         exit;
16.     }
17.  
18. }
19. ?>

而後,寫一個生成驗證碼的方法,好比

01. class UsersController extends AppController {
02.  
03.     var $name        = 'Users';
04.     var $components  = array('Captcha');
05.  
06.     function captcha() {
07.         Configure::write('debug', '0');
08.         $this->autoRender = false;
09.         $this->Captcha->render();
10.     }
11.  
12. }

視圖中的調用

1. echo $html->image(array('controller' => 'Users','action'=>'captcha'));

驗證提交的驗證碼是否正確

01. function _checkCaptcha($model) {
02.     if ($this->Session->check('captcha')) {
03.         $s_captcha = $this->Session->read('captcha');
04.  
05.         if (!empty($this->data[$model]['captcha']) && $this->data[$model]['captcha'] == $s_captcha) {
06.             return true;
07.         }
08.     }
09.  
10.     return false;
11. }

 

總結

Captcha是一個免費的驗證碼文件,使用方法超級簡單,可是安全性很高,配置方法簡單,能夠應用於多種開發程序框架

Captcha的配置文件爲kcaptcha_config.php

經過它能夠變動生成的圖片大小,樣式等內容,有興趣的話本身能夠看看!

相關文章
相關標籤/搜索