0

我的 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());
        }
    }
}

问题是后者会接受密码为空或密码不匹配的表单并将其写入数据库。用户名和电子邮件字段验证工作正常,但我不确定如何验证密码字段。

4

1 回答 1

0

哎,搞错了。在阅读了Model_Auth_User我在 rules() 方法上写的文档后:

用户模型的规则。因为密码在设置时始终是散列,所以您需要在控制器中运行额外的 not_empty 规则以确保您没有散列空字符串。密码规则应在模型外部或使用模型辅助方法强制执行。

散列一个空字符串仍然返回一个不为空的散列。所以需要在模型之外进行检查,更具体地说,在控制器端进行检查。

于 2012-06-29T12:54:41.270 回答