我正在尝试将kohana-captcha module用于Kohana 3.3项目。在验证之前一切正常。
问题是,无论生成什么图像,验证码模块总是会显示不同的答案。以下是我的代码示例:
<?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 )
有任何建议吗?
答案 0 :(得分:1)
您应检查POST
变量(在本例中为“验证码”)是否等于验证码的实例。因此,您应在Captcha
声明if
声明之前启动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
}