Функция cot_uriredir_apply в Cotonti
после выполнения какого-либо действия, например, после авторизации или регистрации, перенаправить пользователя обратно на исходную страницу, с которой он пришел.
Функция cot_uriredir_apply применяется для перенаправления пользователя на URI, который был сохранен в сессии. Это может быть использовано для того, чтобы после выполнения какого-либо действия, например, после авторизации или регистрации, перенаправить пользователя обратно на исходную страницу, с которой он пришел.
Код функции:
function cot_uriredir_apply($cfgRedirect = true)
{
global $redirect;
// Проверка, нужно ли выполнить перенаправление
if ($cfgRedirect && empty($redirect) && !empty($_SESSION['s_uri_redir'])) {
// Если перенаправление разрешено и переменная $redirect пуста,
// то устанавливаем $redirect значением из сессии
$redirect = $_SESSION['s_uri_redir'];
}
}
Объяснение:
Параметр $cfgRedirect:
Этот параметр указывает, следует ли применять перенаправление. По умолчанию значение true (перенаправление разрешено).
Глобальная переменная $redirect:
Глобальная переменная $redirect используется для хранения URL, на который должен быть выполнен редирект.
Условие перенаправления:
Если $cfgRedirect установлено в true и переменная $redirect пуста (что значит, что еще не было установлено место для перенаправления), и если в сессии есть сохраненный редирект (переменная $_SESSION['s_uri_redir']), то:
Переменной $redirect присваивается значение из сессии, что означает, что пользователь будет перенаправлен на URI, сохраненный ранее.
Перенаправление:
Это простая логика, которая применяет редирект, если в сессии был сохранен URI, с которого пользователь был перенаправлен.
Пример использования:
Предположим, что пользователь после успешной регистрации или входа должен быть перенаправлен на ту страницу, с которой он пришел. Перед этим на целевой странице, например, login.php, можно сохранить исходный URI в сессии.
Пример сохранения URI:
// Сохраняем URI страницы, на которой был запрос
$_SESSION['s_uri_redir'] = $_SERVER['REQUEST_URI'];
Применение редиректа:
После успешного логина или регистрации вызовем функцию для применения редиректа:
cot_uriredir_apply(); // Это установит $redirect на сохраненный URI, если перенаправление разрешено
Если редирект должен быть выполнен, то в коде будет использовано значение из $redirect для перенаправления пользователя.
Пример применения функции в Cotonti
if (Cot::$usr['id'] > 0) {
cot_uriredir_apply(Cot::$cfg['redirbkonlogout']);
$serverEventsObserverService = ServerEventsObserverService::getInstance();
$serverEventsObserverService->remove(Cot::$usr['id'], $serverEventsObserverService->getTokenForCurrentUser());
}
Этот код выполняет несколько действий, связанных с авторизацией пользователя и обработкой событий при выходе из системы. В частности, он вызывает функцию cot_uriredir_apply для применения редиректа, если это разрешено, а также использует сервис ServerEventsObserverService для удаления событий, связанных с пользователем, при его выходе из системы.
Пояснение:
Условие if (Cot::$usr['id'] > 0):
Это условие проверяет, авторизован ли пользователь. Если значение Cot::$usr['id'] больше нуля, значит, пользователь вошел в систему. Если пользователь не авторизован (например, Cot::$usr['id'] == 0), то этот блок не выполняется.
Вызов функции cot_uriredir_apply(Cot::$cfg['redirbkonlogout']):
Функция cot_uriredir_apply вызывается с параметром Cot::$cfg['redirbkonlogout']. Параметр redirbkonlogout в конфигурации может быть флагом, указывающим, нужно ли перенаправлять пользователя на другую страницу после выхода из системы.
Если в конфигурации указано значение true для этого флага, то будет выполнено перенаправление на URI, сохраненный ранее в сессии с помощью функции cot_uriredir_store. Это действие возвращает пользователя туда, где он был до выполнения операции.
Получение экземпляра сервиса ServerEventsObserverService:
С помощью вызова ServerEventsObserverService::getInstance() создается (или возвращается существующий) экземпляр класса ServerEventsObserverService. Это сервис, который, судя по всему, управляет наблюдением за событиями на сервере, связанными с пользователями.
Удаление событий для текущего пользователя:
В строке $serverEventsObserverService->remove(Cot::$usr['id'], $serverEventsObserverService->getTokenForCurrentUser()); выполняется удаление событий для текущего пользователя. Здесь передаются два параметра:
Cot::$usr['id']: идентификатор текущего пользователя, для которого нужно удалить события.
getTokenForCurrentUser(): метод, который, вероятно, возвращает уникальный токен для текущего пользователя, необходимый для идентификации его событий.
Это действие может быть частью логики для очистки или завершения сессии пользователя, например, при выходе из системы или при завершении каких-либо операций, связанных с пользователем.
Резюме:
Проверка авторизации: Код сначала проверяет, авторизован ли пользователь (Cot::$usr['id'] > 0).
Применение редиректа: Если пользователь авторизован и в конфигурации разрешено перенаправление после выхода, вызывается функция cot_uriredir_apply, которая перенаправит пользователя на страницу, с которой он пришел, если это предусмотрено.
Удаление событий: С помощью ServerEventsObserverService удаляются события, связанные с текущим пользователем, что может быть частью механизма очистки или завершения сессии.
Это может быть полезно, например, при выходе пользователя из системы: он будет перенаправлен на нужную страницу, и все связанные с ним события на сервере будут удалены.
Комментарии (0)
Автор контента
Оффлайн
Administrator
Последняя авторизация: 05.07.2026 18:32
- Страница размещена: 23.01.2025 23:39
- Последнее обновление: 23.01.2025 23:39