Финансовая поддержка VPS, бесплатные дополнения и docs Донаты оплачивают сервер и двигают бесплатные дополнения MODX и документацию. Поддержать

Всего 126 110 комментариев

Илья
Илья
Спасибо, поискал инфу и тоже понял, что дело в login. Написал posthooks
<?php
// Получаем данные из запроса
$aboutMe = $modx->getOption('about_me', $_POST, '');

// Удаляем нежелательные HTML-теги (по желанию) и сохраняем с разрешёнными тегами
$allowedTags = '<p><a><strong><i>
<h2><h3><h4><ul><ol><li><blockquote>'; // Разрешённые теги
$aboutMe = strip_tags($aboutMe, $allowedTags);

// Сохраняем данные обратно в базу данных
$userId = $modx->user->get('id');
$userProfile = $modx->getObject('modUserProfile', $userId);
if ($userProfile) {
    $userProfile->set('about_me', $aboutMe);
    $userProfile->save();
}
Заработало, выбрал только нужные теги. Все шикарно сохраняет.
Елена Бредова
Елена Бредова
Столкнулась с тем, что надо добавить 2 телеграм-канала… и тут упс, нельзя «Сервис с таким именем уже существует». Что можно сделать? Так люблю этот компонент за его легкость и удобство. Не хочется сносить и лепить что-то вручную.
Артур Шевченко
Артур Шевченко
Куда сохраняются файлы? Как поменять путь? Зачем проверять допустимое количество файлов в цикле оно же не меняется? Если имя файла будет содержать пробелы и кириллицу проблем не будет? А если загрузить файл, перезагрузить страницу и загрузить его повторно он сохраниться?
Александр Туниеков
Александр Туниеков
Круто. А я слона не заметил :-) разбираться с шаблонами политик полез :-)
Хотя в курсе же был что доступ только на процессорах проверяется. Но засомневался.
Николай Савин
Николай Савин
Здравствуйте. Готового решения конечно же нет в рамках MODX. Но они есть в мире PHP.

Для регулирования частоты запросов к API в PHP можно использовать библиотеку php-ratelimiter или symfony/rate-limiter. Оба инструмента предоставляют удобные способы контроля и ограничения количества запросов за определённый промежуток времени.

К примеру вот так используется php-ratelimiter
use RateLimiter\RateLimiter;
use RateLimiter\Storage\FileStorage;

$storage = new FileStorage('/path/to/storage');
$limiter = new RateLimiter($storage, 100, 3600); // 100 запросов в час

$key = 'user_ip_or_api_key'; // Уникальный идентификатор (например, IP или API-ключ)
if ($limiter->check($key)) {
    // Запрос разрешён
    $limiter->increment($key);
} else {
    // Лимит исчерпан
    http_response_code(429);
    echo 'Too Many Requests';
    exit;
}