Я разрабатываю базовое веб-приложение с использованием архитектуры MVC. Я строю свои собственные, чтобы попытаться полностью понять, как работает арка 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 всегда имеет лучшую / самую знающую пользовательскую базу. Если у кого-нибудь есть советы относительно того, где я должен направить эти вопросы, я был бы очень признателен, поэтому я не добавляю беспорядок!