1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/Discuz-DiscuzX

 / Детали:

Удаление пользователя в UCenter привело к отображению ошибки отправки уведомлений в списке уведомлений,...

Предстоит сделать
Владелец
Создано  
10.03.2025

DiscuzX 3.5 + UCenter 1.7.0

Есть ли уже сообщение об этой проблеме?

  • Я уже провёл поиск и подтвердил, что никто ещё не сообщал о данной проблеме.

Описание проблемы

При удалении пользователя в UCenter управлении пользователями отображается сообщение "Уведомление Discuz не удалось". При проверке через центр управления пользователями Discuz и базы данных, удалённый пользователь всё ещё существует.

Шаги воспроизведения проблемы

Вчера произвёл обновление с версии Discuz! X3.5 Release 20240520 до Discuz! X3.5 Release 20250205 используя пакет обновления от официального сайта.

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

Сообщение об ошибке

count(): Аргумент #1:I created an additional security question but forgot, can it be reset? ($value) должен быть типа Countable|array, string передан
PHP: api/uc.php#uc_note->uc_note->deleteuser():0064
api/uc.php#uc_note_handler::uc_note_handler::deleteuser():0100
uc_client/extend_client.php#discuz_table_archive->discuz_table_archive->fetch_all():0024
source/class/discuz/discuz_table_archive.php#break():0042
Пользователь: uid=0; IP=здесь не указывается; RIP: здесь не указывается Запрос: /api/uc.php?code=d99fDKs3YXyh%2FHL0LwT68%2BlgUYrlLshqrXCAlnYXO2tMA6vApjhSYfP%2FgjDxL9fV4nku8bmzX4PL8A03pQ%2FS9%2FtCXKSI%2F4nKEoA&times=1### Проблемы, с которыми столкнулся при решении проблемы

После выявления проблемы были произведены ряд изменений в файле /uc_client/extend_client.php, что позволило решить данную проблему.
Исходный код:

public static function deleteuser($get, $post) {
    global $_G;
    $uids = str_replace("'", '', stripslashes($get['ids']));
    $ids = array();
    $ids = array_keys(C::t('common_member')->fetch_all($uids));
    require_once DISCUZ_ROOT.'./source/function/function_delete.php';
    $ids && deletemember($ids);
    
    return API_RETURN_SUCCEED;
}

Приведён к следующему виду:

public static function удалениепользователя($get, $post) {
    global $_G;
    $uids = str_replace("'", '', stripslashes($get['ids']));
    $uidsArray = explode(',', $uids);
    $uidsArray = array_map('intval', $uidsArray);
    $uidsArray = array_filter($uidsArray);

    if (empty($uidsArray)) {
        return API_RETURN_FAILED;
    }
    $members = C::t('common_member')->fetch_all($uidsArray);        
    $ids = array_keys($members);

    require_once DISCUZ_ROOT . './source/function/function_delete.php';
    if (!empty($ids)) {
        deletemember($ids);
    }

    return API_RETURN_SUCCEED;
}

Замечание: В данном контексте было решено использовать более понятные названия функций на русском языке, такие как "удалениепользователя", чтобы обеспечить лучшее понимание кода для русскоязычных разработчиков. Однако, если используется конкретная конвенция именования функций в проекте, следует придерживаться её.

Информация о системе

Версия Discuz!: Discuz! X3.5 Release Yöntem 20250205 UTF-8
Версия UCenter: UCenter 1.7.0 Release 20250205
Система сервера и PHP: Linux(Linux) / PHP 8.0.26 / fpm-fcgi
Программное обеспечение сервера: nginx/1.24.0
Версия MySQL сервера: 5.7.44-log
Ограничение размера файла: 50М### Другие версионные данные

Был ли сайт модифицирован самостоятельно

  • Если сайт был модифицирован или переопределен, выберите этот пункт.

Дополнительная информация

1: Тестирование управления пользователями в UCenter — изменение электронной почты пользователя — обновление данных UCenter (электронная почта была изменена), но данные в Discuz и базе данных (электронная почта) остались без изменений.
2: Возможно, при управлении пользователями в UCenter — редактировании информации пользователя (никнейм, электронная почта, пароль и т.д.) возникают такие проблемы.

Относительные версии

X3.5

Комментарий (0)

GitLife Service Account Задача создана

Вход Перед тем как оставить комментарий

Статус
Ответственный
Контрольная точка
Pull Requests
Связанные запросы на слияние могут быть закрыты после их объединения
Ветки
Дата начала   -   Крайний срок
-
Закрепить/Открепить
Приоритет
Участники(1)
1
https://api.gitlife.ru/oschina-mirror/Discuz-DiscuzX.git
git@api.gitlife.ru:oschina-mirror/Discuz-DiscuzX.git
oschina-mirror
Discuz-DiscuzX
Discuz-DiscuzX