我的Kohana视图文件看起来像:
<?=Form::open('/signup/user');?>
<?=Form::label('username', 'Username: ')?>
<?=Form::input('username', isset($username)?$username:''); ?>
<br />
<?=Form::label('password', 'Password: ')?>
<?=Form::password('password', ''); ?>
<br />
<?=Form::label('confirm', 'Re-enter Password: ')?>
<?=Form::password('confirm', ''); ?>
<br />
<?=Form::label('email', 'Email: ')?>
<?=Form::input('email', ''); ?>
<?=Form::submit('submit', "Submit"); ?>
<?=Form::close()?>
还有我的控制器:
public function action_user(){
if($this->request->method() == "POST"){
$this->template->set('username', $this->request->post('username'));
$user = ORM::factory('user');
try{
$user->values($_POST)->save();
}catch(ORM_Validation_Exception $e){
var_dump($e->errors());
}
}
}
问题是后者会接受具有空密码或不匹配密码的表单并将其写入数据库。用户名和电子邮件字段验证工作正常,但我不确定如何验证密码字段。
Ai,弄错了。在阅读了Model_Auth_User
的文档后,我写了这个关于 rules() 方法:
用户模型的规则。因为密码始终是哈希 设置好了,not_empty你需要在你的 控制器,以确保您没有对空字符串进行哈希处理。密码 应在模型外部或使用模型帮助程序强制实施规则 方法。
对空字符串进行哈希处理仍返回不为空的哈希。因此,需要在模型之外进行检查,更具体地说,是在控制器端进行检查。