public function go() { try { // select visitor type (user or guest) if (self::CheckSession()) { $visitor = new User($_SESSION['user']['name']); } elseif (self::checkCookies()) { $visitor = new User($_COOKIE['name']); } else { $visitor = new Guest(); } // select action $action = $visitor->getAction(); // perform action if ($action) { switch ($action) { case "login": if ($visitor->auth()) { $visitor = new User($visitor->getName()); $visitor->login(); } break; case "register": if ($visitor->register()) { $visitor = new User($visitor->getName()); $visitor->login(); } break; case "logout": $visitor->logout(); break; case "delete": $visitor->remove(); break; } $this->reload(); } // show html if ($visitor instanceof User) { $this->templateVars['name'] = $visitor->getName(); $this->templateVars['id'] = $visitor->getId(); $this->templateVars['regdate'] = $visitor->getRegDate(); $this->templateVars['lastvisit'] = $visitor->getLastVisit(); $this->showTemplate('inner'); } elseif ($visitor instanceof Guest) { if (isset($_SESSION['message'])) { $this->templateVars['message'] = $_SESSION['message']; unset($_SESSION['message']); } if (isset($_SESSION['guest']['entered_name'])) { $this->templateVars['entered_name'] = $_SESSION['guest']['entered_name']; unset($_SESSION['guest']['entered_name']); } $this->showTemplate('login'); } else { throw new \Exception(); } } catch (\Exception $e) { $_SESSION['message'] = $e->getMessage(); $this->reload(); } }