Функции cot_shield_protect и cot_shield_update в Cotonti

Функция cot_shield_protect отвечает за блокировку пользователя, если защита активирована. Функция cot_shield_update обновляет данные о времени окончания защиты и типе действия пользователя в сессии

Функция cot_shield_protect
 
/**
 * Warn user of shield protection
 */
function cot_shield_protect()
{
    global $sys, $shield_limit, $shield_action, $L;

    // Проверяем, если текущее время меньше времени, когда защита должна завершиться
    if ($shield_limit > $sys['now']) {
        // Если защита активна, показываем сообщение об ошибке и прекращаем выполнение
        cot_die_message(403, true, $L['shield_title'], cot_rc('shield_protect', array(
            'sec' => $shield_limit - $sys['now'],  // Показываем, сколько секунд осталось до завершения защиты
            'action' => $shield_action           // Показываем тип текущего действия, из-за которого активирована защита
        )));
    }
}


Разбор и комментарии:

Общее описание: Эта функция используется для отображения предупреждения пользователю, если защита (shield protection) активирована. Если защита все еще действует, она блокирует дальнейшие действия пользователя, показывая сообщение об ошибке.

Комментарии и пояснения:

Проверка времени защиты:

 
if ($shield_limit > $sys['now']) {


Здесь происходит сравнение текущего времени (в Unix timestamp) с временем окончания действия защиты ($shield_limit). Если текущее время меньше, чем время завершения защиты, то защита все еще активна, и нужно показать пользователю предупреждение.
Вывод сообщения и прекращение выполнения:

 
cot_die_message(403, true, $L['shield_title'], cot_rc('shield_protect', array(
    'sec' => $shield_limit - $sys['now'],  // Время до окончания защиты
    'action' => $shield_action           // Тип действия, из-за которого активирована защита
)));


Если защита активна, то вызывается функция cot_die_message, которая выводит сообщение об ошибке с кодом 403 (Forbidden). Сообщение сообщает пользователю, что защита в действии, и также выводится информация о времени до окончания защиты и типе действия, которое привело к активации защиты. С помощью функции cot_rc подставляются переменные в строку сообщения.
Роль функции:
Функция cot_shield_protect отвечает за блокировку пользователя, если защита активирована. Она информирует пользователя о том, сколько времени осталось до завершения защиты, и почему он заблокирован.

 


Функция cot_shield_update
 
/**
 * Updates shield state
 *
 * @param int $shield_add Hammer
 * @param string $shield_newaction New action type
 */
function cot_shield_update($shield_add, $shield_newaction)
{
    global $cfg, $sys;

    // Рассчитываем новое время окончания защиты
    $shield_newlimit = $sys['now'] + floor($shield_add * $cfg['shieldtadjust'] / 100);

    // Обновляем значения в сессии
    $_SESSION['online_shield'] = $shield_newlimit;  // Обновляем время завершения защиты
    $_SESSION['online_action'] = $shield_newaction; // Обновляем тип текущего действия
}


Разбор и комментарии:
Общее описание:
Эта функция обновляет состояние защиты (shield) для текущего пользователя.
Она рассчитывает новое время окончания защиты и обновляет соответствующие данные в сессии.

Комментарии и пояснения:

Расчет нового времени защиты:
 
$shield_newlimit = $sys['now'] + floor($shield_add * $cfg['shieldtadjust'] / 100);

Здесь происходит расчет нового времени окончания защиты.
Сначала рассчитывается время, которое нужно добавить к текущему времени ($sys['now']).
Значение $shield_add — это количество времени (в секундах), на которое будет продлена защита.
Этот параметр умножается на значение из конфигурации $cfg['shieldtadjust'] (предположительно, коэффициент корректировки), и результат делится на 100 для получения нужного времени.
Функция floor округляет результат в меньшую сторону до целого числа.

Обновление данных в сессии:
 
$_SESSION['online_shield'] = $shield_newlimit;
$_SESSION['online_action'] = $shield_newaction;

После вычисления нового времени окончания защиты, оно сохраняется в сессию через $_SESSION['online_shield']. Также сохраняется тип текущего действия в $_SESSION['online_action']. Эти данные будут использованы в будущем для проверки состояния защиты.

Роль функции:
Функция cot_shield_update обновляет параметры защиты, устанавливая новое время окончания блокировки и тип действия, которое привело к блокировке. Это необходимо для того, чтобы система могла продолжать контролировать, когда защита завершится, и какие действия пользователей вызывают ее активацию.

Резюме:
Функция cot_shield_protect проверяет, активна ли защита, и, если она активна, блокирует дальнейшие действия пользователя, выводя соответствующее сообщение.
Функция cot_shield_update обновляет данные о времени окончания защиты и типе действия пользователя в сессии, таким образом поддерживая актуальную информацию о состоянии защиты.

3 minutes read Administrator

Comments (0)

No comments yet
Only registered users can post new comments

Content author

Administrator

Offline

Administrator

Last logged: 2026-07-05 18:32

  • Page published: 2025-01-23 11:14
  • Last update: 2025-01-23 11:14

Similar pages

Функции cot_rc_add_ ххх в Cotonti (Устаревшее)
1 Функции cot_rc_add_embed, cot_rc_add_file, cot_rc_embed_footer, cot_rc_link_file, cot_rc_link_footer, cot_rc_minify в
Функции cot_rc_add_standard в Cotonti
2 Разберем функцию cot_rc_add_standard, включая её назначение, рекомендации по применению и подробные комментарии внутри
Функции генерирования и реализации капчи в Cotonti
3 Функции: cot_captcha_generate, cot_captcha_list, cot_captcha_validate и cot_generateCaptchaTags. В этой статье
Функции хеширования MD5, SHA1 и SHA256 в Cotonti
4 1. Функция cot_hash_md5   /**  * Simple MD5 hash wrapper. Old passwords use this func.  *  * @param  string $data Data
Функции cot_xg и cot_xp в Cotonti
5 Функции защиты от XSS в контексте PHP-фреймворка Cotonti В PHP-фреймворке Cotonti предусмотрены механизмы защиты от