2013-02-21 120 views
0

我正在嘗試爲Kohana 3.3項目使用kohana-captcha module。一切工作正常,直到驗證。Kohana驗證碼模塊

問題是無論生成什麼圖像,驗證碼模塊總是顯示不同的答案。這裏是我的代碼的例子:

<?php defined('SYSPATH') or die('No direct script access.'); 

class Controller_User extends Controller_Template { 

    public $template = "template"; 

    public function action_create() 
    { 
      if (isset($_POST['captcha'])) 
      { 
       print $_POST['captcha']; 
       print ">>>".Captcha::valid($_POST['captcha'])."<<<"; 
      } 

      $captcha = Captcha::instance(); 

      $this->template->content = View::factory('user/create') 
       ->bind('captcha', $captcha); 
    } 
} 

?> 

查看代碼:

<form method="post" action="/user/create/" class="form-horizontal" id="form"> 
    <div class="control-group"> 
     <label class="control-label" for="inputCaptcha"> 
      <?=$captcha?> 
     </label> 
     <div class="controls"> 
      <input type="text" id="inputCaptcha" placeholder="Код с картинки" name="captcha"> 
      <span class="help-inline"></span> 
     </div> 
    </div>  
</form> 

$_SESSION and $_COOKIE陣列也是空的。 重點是我看到驗證碼圖片,輸入代碼,提交表格,然後收到任何內容。 Captcha::valid($_POST['captcha'])什麼也沒給我顯示。當我在Captcha::instance()之後嘗試製作print_r($captcha)時,它向我顯示一個具有受保護「響應」屬性的對象,但它包含完全不同的字母和數字。

例如,我看到的圖像與 「KX5R」 圖形驗證碼,這裏的print_r($驗證碼)的結果:

Captcha_Alpha Object ([driver:protected] => [response:protected] => MWXF [image:protected] => [image_type:protected] => png) 

有何意見?

+0

我想我的問題是與此相關的https://github.com/kolanos/kohana-captcha/issues/5不過,我不知道如何計算出來。 – Gregory 2013-02-21 20:59:36

回答

1

你應該檢查你的POST變量,在這種情況下'驗證碼',是否等於驗證碼的實例。因此,您應在if聲明之前啓動Captcha對象,並在此聲明中驗證post

事情是這樣的:

$captcha = Captcha::instance(); 

$this->template->content = View::factory('user/create') 
    ->set('captcha', $captcha); 

if ($this->request->method() === Request::POST) 
{ 
    if (Captcha::valid($_POST['captcha'])) 
     .. do something if captcha is OK 
    else 
     ..do something if captcha is not OK 
} 
+0

哦,它的工作原理!輝煌!非常感謝你! – Gregory 2013-02-21 23:38:26