2013-03-21 99 views
0

我有以下登录代码:Kohana的用户登录添加错误

if ($logged == true) { 
       HTTP::redirect('profile/private'); 
      } else { 
       $validation = Validation::factory($_POST) 
         ->rule('username', 'not_empty') 
         ->rule('password', 'not_empty'); 
       if ($validation->check()) { 

       } 
       $errors = $validation->errors('login'); 

的情况下,这里如果没有输入用户名,正确的消息将被播种(我在的login.php文件的消息在邮件文件夹中例如:'username'=> array('not_empty'=>'字段:字段不能为空',对于密码字段也是一样的)并且这两个规则正常工作并且出错 但是,当给出用户名和密码时并且用户未被认证为“有效”(例如错误的密码或输入错误的用户名)我需要一个自定义错误消息(例如:'检查用户名或密码,可能CAPSLOCK已被按下')如何实现?我不希望它是相对的只有一个字段像login.php字段中的所有消息。请帮助

回答

1

然后回答你的问题:这是一个额外的错误消息用于用户的目的。这不是一个或您的模型的属性(用户名,密码)的具体错误,所以这属于您的控制器。

只需在您的控制器中,检查用户是否登录并回显错误。

if (!Auth::instance()->login($_POST['username'], $_POST['password'], $_POST['autologin'])) 
{ 
    echo 'Check username or password, Maybe CAPSLOCK is pressed'; 
} 
+0

我在注册时采用了这种方式,它工作的很好,但我需要进行登录验证。当我检查:$ logged = Auth :: instance() - >登录($ _ POST ['username'],$ _POST ['password'],$ _POST ['autologin'] = false)我只有true或false 。我需要给用户一个这样的信息:“检查用户名或密码,也许CAPSLOCK被按下”,这与任何特定的领域(我认为是这样)无关。 – masteryoda 2013-03-22 10:58:59

+0

然后你根本不需要验证。只要检查$ logged === false然后回显错误。 – Daan 2013-03-22 11:39:31

+0

我认为这是最好的方法。我会用它。 – masteryoda 2013-03-22 14:12:15

0

根据documentation如果您在没有定义模板的情况下调用$ validation-> errors(),它将返回一个错误数组,然后您可以查看$ errors数组并确定哪些类型的错误你得到并作出适当的反应

+0

$ validation-> errors()在check()方法后为null。我不知道我是否可以从$ logged = Auth :: instance() - > login($ _ POST ['username'],$ _POST ['password'],$ _POST ['autologin'] = false) 。我想我可以添加错误,例如用户名字段与索引让我们说'一般',这将工作,但它不知道错误是由用户名生成。所以从这一点来看,这将是错误的。我在这里发现了这个问题:https://github.com/mixu/useradmin,所以我认为它可以使用。 – masteryoda 2013-03-22 09:47:54