在mvc php验证

nav*_*vid 5 php validation model-view-controller

我不知道哪一个最好?您认为user login form在控制器中验证或其他形式更好吗?或者最好在模型中定义一个类,例如"安全类"以进行验证?或定义一些类进行验证?你知道更好的选择还是更好的技术?

<?php
class acontroller{
.
.
.
private function loginformAction()
{
    $this->actionform='loginform';
    $this->errorMsg=array();
    if(isset($post)){
        if(empty($post('aliasName'))){
                       ...
        }else{
           ...
                    }
        if(empty($post('password'))){
                      ...
        }
        if(empty($post('re_password'))){
                      ...   
        }
        if(!empty($post('password')) && isset($post('re_password')) ){
                      ...
        }
    }

    $this->render();
}
  .
  .
  .
 }   
Run Code Online (Sandbox Code Playgroud)

ter*_*ško 8

验证是域逻辑的一部分.控制器应该与此无关.它只需将传入的请求值传递给模型层的适当部分.

验证本身应该在模型层中的域对象中进行.此外,在某些形式中,您必须担心数据完整性(即注册表单中的唯一用户名).在这种情况下,数据完整性检查实际上应由数据映射器处理,实质上是将数据传递给SQL数据库,SQL数据库执行检查,如果存在违规,则会触发DB抽象异常.

更新

由于您的问题是处理身份验证/授权,您可能会发现此帖子相关.

  • 表单用于创建条目.如果您有多个表单,创建**相同的**实体(例如,您具有正常的用户注册和基于OpenID的注册),那么,如果底层逻辑相同,则验证发生在相同类型的域对象中.输入之间的差异可以由控制器或服务处理.如果逻辑不同,则表示您应该使用不同的域对象.这就是多态性的来源. (2认同)