/** * Получение системного сообщения * @return string - текст сообщения */ public static function get() { $_s = session_id(); if (!joosCore::is_admin() && empty($_s)) { session_name(joosSession::session_cookie_name()); session_start(); } $message = joosRequest::session('joostina.mosmsg', false); if ($message != '' && joosString::strlen($message) > 300) { // выводим сообщения не длинее 300 символов $message = joosString::substr($message, 0, 300); } /** @var $_SESSION array */ unset($_SESSION['joostina.mosmsg']); return $message ? '<div class="b-system_message">' . $message . '</div>' : ''; }
/** * Создание сессии для юзера, для которого уже был ранее найден токен * */ public function create_session() { if (!$this->_search_token_result) { return false; } $session = new modelUsersSession(); $session->time = time(); $session->guest = 0; $session->user_name = $this->_search_token_result->user_name; $session->user_id = $this->_search_token_result->user_id; $session->is_admin = 0; // сгенерием уникальный ID, захеширем его через sessionCookieValue и запишем в базу $session->generate_id(); // записываем в базу данные о авторизованном пользователе и его сессии if (!$session->store()) { return false; } // формируем и устанавливаем пользователю куку что он авторизован $sessionCookieName = joosSession::session_cookie_name(); // в значении куки - НЕ хешированное session_id из базы //setcookie($sessionCookieName, $session->get_cookie(), false, '/', JPATH_COOKIE); joosCookie::set($sessionCookieName, $session->get_cookie(), array('expires' => '+1 day')); //обновляем время последнего доступа к токену $query = "UPDATE #__users_tokens SET updated_at = '" . JCURRENT_SERVER_TIME . "' WHERE token=" . joosDatabase::instance()->get_quoted($this->_search_token_result->token); joosDatabase::instance()->set_query($query)->query(); //запоминаем ID $this->_last_user_id = $this->_search_token_result->user_id; //иногда удаляем старые токены $this->delete_old_tokens(); return true; }