Личный кабинет пользователя
Это также продолжение раздела Авторизация пользователя. Создаем домашнюю страницу пользователя с возможностью редактирования личных данных и выхода из авторизации (разлогинивания). Добавляем методы в файл модели models/accounts.model.php
<? public function generateLogoutToken($account) { return md5($account -> id.$_SESSION["account"]["token"].$_SERVER["HTTP_USER_AGENT"]); } public function logout() { unset($_SESSION["account"]); } ?>
Добавляем в самое начало шаблона view-login.php код для разлогинивания
<? if($account && isset($_GET['logout'])) if($_GET['logout'] == $mv -> accounts -> generateLogoutToken($account)) { $mv -> accounts -> logout(); $mv -> reload(); } ?>
Создаем файл шаблона views/view-user-home.php и вносим маршрут к шаблону в файл config/routes.php
$mvFrontendRoutes = array( ... , "home/" => "view-user-home.php" );
Ссылку на разлогинивание можно ставить в любом месте сайта
<? $logout_url = $mv -> root_path."login/?logout=".$mv -> accounts -> generateLogoutToken($account); ?> <a href="<? echo $logout_url; ?>">Выйти из аккаунта</a>
Содержимое файла шаблона views/view-user-home.php
<? if(!$account) $mv -> redirect("login/"); $form = new Form("Accounts", $account -> id); $form -> loadRecord(); $form -> addRule("email", "unique", true, "Данный email уже зарегистрирован."); $form -> useTokenCSRF(); if(!empty($_POST)) { $form -> getDataFromPost() -> validate(array("name", "email", "phone")); if($form -> isValid()) { $account -> setValues($form -> getAllValues(array("name", "email", "phone"))); $account -> update(); $mv -> reload("?done"); } } include $mv -> views_path."main-header.php"; ?> <? echo $form -> displayErrors(); if(isset($_GET['done'])) echo "<div class=\"success\"><p>Данные были успешно обновлены.</p></div>\n"; ?> <form method="post" action="<? echo $mv -> root_path; ?>home/"> <table> <? echo $form -> display(array("name", "email", "phone")); ?> </table> <div class="form-buttons"> <? echo $form -> displayTokenCSFR(); ?> <input type="submit" value="Обновить" /> </div> </form> <? include $mv -> views_path."main-footer.php"; ?>