0

Kohana3.3プロジェクトにkohana-captchaモジュールを使用しようとしています。検証まではすべて正常に機能します。

問題は、生成された画像に関係なく、Captchaモジュールが常に異なる回答を表示することです。これが私のコードの例です:

<?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'])何も表示されません。保護された「応答」プロパティを持つオブジェクトが表示されたprint_r($captcha)後に作成しようとすると、まったく異なる文字と数字が含まれます。Captcha::instance()

たとえば、「KX5R」キャプチャコードを含む画像が表示されます。これは、print_r($ captcha)の結果です。

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

何かアドバイスはありますか?

4

1 に答える 1

1

POST変数 (この場合は「captcha」) が Captcha のインスタンスと等しいかどうかを確認する必要があります。したがって、検証しているステートメントCaptchaの前にオブジェクトを開始する必要があります。ifpost

このようなもの:

$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 
}
于 2013-02-21T23:21:37.750 に答える