Я использую PHP и Smarty. У меня есть простое приложение, которое:Шаблон проверки пользователя в PHP с помощью Smarty
- Показывает заголовок страницы
- Проверяет пользователь вошел в систему -> проверить сессии
- Проверяет пользователь хочет выйти -> затем сотрите сеанс
- Если войти в систему показывает меню.
- Если не авторизован, то проблемы пользователя для идентификатора/пароля -> установить сеанс
- Показывает колонтитула страницы
Теперь я хочу добавить следующее заголовок:
- имя пользователя, если вход в
- «логин» строку, если не вошли в
чтобы сделать это, кажется, требует установка моей функции PrintHeader станет сложной. Теперь я не могу напечатать заголовок, пока не узнаю, что пользователь вошел в систему/только что вошел в систему/вышел из системы, плюс заголовок должен идти до вызова пользователя/пароля.
Какой подход я могу использовать здесь? Можно ли буферизировать заголовок «не вошел в систему», а затем заменить его на «logged if header» , если это необходимо.
SmartyApp::PrintHeader();
Application->IsLoggedIn()
Application->DoesUserWantsToLogOut()
Application->IfNotLoggedInThenShowChallengeToUser()
Application->IfLoggedInThenShowFullMenu()
SmartyApp::PrintFooter();
Похоже, что у вас есть небольшой архитектурный удар, который нужно преодолеть первым. Такая логика - выявление, если пользователи зарегистрированы и т. Д. - не следует делать в шаблоне. Но скорее в каком-то контроллере или другом бизнес-логическом месте. Вы используете это? Вы используете фреймворк? Или ваш собственный? Если да, может быть, вы можете дать некоторую информацию об этом? – berkes
Я использую свой собственный импровизированный шаблон. У меня есть тонкий контроллер верхнего уровня для каждой страницы, который расширяет класс с помощью нескольких утилит. Каждый контроллер создает экземпляр соответствующего класса модели, который выполняет бизнес-логику. Я использую Smarty для рендеринга страниц. Я не уверен, куда должна идти логика печати. –