/** * Получение системного сообщения * @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 static function get($key, $default = null) { self::start(); return joosRequest::session($key, $default); }
public static function init_user() { $option = joosRequest::param('option'); // logout check if ($option == 'logout') { $database = joosDatabase::instance(); // обновление записи последнего посещения панели управления в базе данных if (isset($_SESSION['session_user_id']) && $_SESSION['session_user_id'] != '') { $query = "UPDATE #__users SET lastvisit_date = " . $database->get_quoted(JCURRENT_SERVER_TIME) . " WHERE id = " . (int) $_SESSION['session_user_id']; $database->set_query($query)->query(); } // delete db session record corresponding to currently logged in user if (isset($_SESSION['session_id']) && $_SESSION['session_id'] != '') { $query = "DELETE FROM #__users_session WHERE session_id = " . $database->get_quoted($_SESSION['session_id']); $database->set_query($query)->query(); } session_destroy(); joosRoute::redirect('index.php'); } if (session_name() != JADMIN_SESSION_NAME) { joosRoute::redirect(JPATH_SITE_ADMIN, 'Ошибка сессии'); } $my = new modelUsers(); $my->id = joosRequest::int('session_user_id', 0, $_SESSION); $my->user_name = joosRequest::session('session_user_name'); $session_id = joosRequest::session('session_id'); $logintime = joosRequest::session('session_logintime'); if ($session_id != session_id()) { joosRoute::redirect(JPATH_SITE_ADMIN, 'Вы не авторизованы'); } // check to see if session id corresponds with correct format if ($session_id == md5($my->id . $my->user_name . $logintime)) { $task = joosRequest::param('task'); if ($task != 'save' && $task != 'apply') { $database = joosDatabase::instance(); $session_life_admin = joosConfig::get2('session', 'life_admin'); // purge expired admin sessions only $past = time() - $session_life_admin; $query = "DELETE FROM #__users_session WHERE time < '" . (int) $past . "' AND guest = 1 AND user_id <> 0"; $database->set_query($query)->query(); // update session timestamp $query = "UPDATE #__users_session SET time = " . $database->get_quoted(time()) . " WHERE session_id = " . $database->get_quoted($session_id); $database->set_query($query)->query(); // set garbage cleaning timeout self::set_session_garbage_clean($session_life_admin); // check against db record of session $query = "SELECT COUNT( session_id ) FROM #__users_session WHERE session_id = " . $database->get_quoted($session_id) . " AND user_name = " . $database->get_quoted($my->user_name) . " AND user_id = " . (int) $my->id; $count = $database->set_query($query)->load_result(); // если в таблице нет информации о текущей сессии - она устарела if ($count == 0) { setcookie(JADMIN_SESSION_NAME); // TODO тут можно сделать нормальную запоминалку последней активной страницы, и разных данных с неё. И записывать всё это как параметры пользователя в JSON joosRoute::redirect(JPATH_SITE_ADMIN, 'Вы не авторизованы'); } } } elseif ($session_id == '') { joosRoute::redirect(JPATH_SITE, 'Вы не авторизованы'); } else { joosRoute::redirect(JPATH_SITE, 'Вы не авторизованы'); exit; } self::$user = $my; }