我正在使用 MVC 架构开发一个基本的 Web 应用程序。我正在构建自己的尝试并完全理解 MVC 架构的工作原理,因此这可以兼作学习练习。
我正在使用 Aura Router 类将我的 URL 映射到控制器和操作,以便将 mysite.com/login 之类的内容映射到 LoginController,如果我向 mysite.com/login/login 提交表单,它将映射到 LoginController- >doAction('登录')。
控制器示例如下所示:
class LoginController implements iController {
public function doAction( PDO $dbh, $action ) {
switch( $action ) {
case 'login':
//login here
$user = new User();
$user_id = FALSE;
if( $user_id = $user->login( $_POST['email'], $_POST['password'] ) ) {
//save user id to session
}
else {
$results = array( 'errors' => array( 'invalid' ) );
MembershipFunc::redirect( '/login', $results );
}
break;
case 'logout':
//logout
break;
default:
break;
}
}
}
我面临的问题是,如果登录失败,为了避免人们刷新页面并重新提交数据,我希望将用户转发回登录页面。目前,如果我不转发它们,它们就会出现在 mysite.com/login/login 页面上,我认为它不是特别干净。我的简单登录表单没问题,因为错误可能会重定向到 mysite.com/login?error=email,password&email=user@domain.com 但如果表单很大,那么我会得到一个巨大的 URL 查询,这真的很恶心.
我已经用基本的(但有用的)PHP 代码示例搜索了关于 MVC 如何工作的良好资源,并且我一直在努力寻找任何特别有用的东西。我应该避免将我的 URL 结构映射到操作,而是选择放置一个名为“操作”的 POST 字段吗?我应该以某种方式构建一个系统,通过 SESSION 数据中的数组传递这些数据吗?
有什么建议吗?
注意:我只想说明我知道这个问题不适合 SO 文化,因为它可能没有正确/错误的答案,但我发现 SO 总是拥有最好/最博学的用户群。如果有人对我应该在哪里提出这些问题有提示,我将非常感激,所以我不会添加混乱!