私はMVCアーキテクチャを使用して基本的なWebアプリを開発しています。私はMVCアーチがどのように機能するかを完全に理解するために自分で構築しているので、これは学習演習としても機能します。
Aura Routerクラスを使用してURLをコントローラーとアクションにマップしているので、mysite.com / loginのようなものがLoginControllerにマップされ、フォームをmysite.com/login/loginに送信するとLoginControllerにマップされます- > doAction('login')。
コントローラの例は次のようになります。
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クエリを取得します。 。
私は、MVCがどのように機能するかについての基本的な(まだ有用な)PHPコード例を使用して優れたリソースを探しましたが、特に有用なものを見つけるのに苦労しました。URL構造をアクションにマッピングするのを避け、代わりに「アクション」と呼ばれるPOSTフィールドを配置することを選択する必要がありますか?このデータをSESSIONデータの配列に渡すシステムをどうにかして構築する必要がありますか?
何かアドバイス?
注:正しい/間違った答えがない可能性があるため、この質問がSO文化に適合しないことを私は知っていることを明記したいと思いますが、SOは常に最良/最も知識のあるユーザーベースを持っていると思います。誰かが私がこれらの質問をどこに向けるべきかについてのヒントを持っているなら、私はそれを本当に感謝しますので、私は混乱を追加しません!