Неверно работает поиск пользователей

Проблемы с установкой или работой phpBB 3.2.x? Получите помощь здесь!
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB 3.1.x/3.2.x | FAQ | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Sfinexer
phpBB 1.2.0
Сообщения: 14
Зарегистрирован: 16.06.2019 20:19
Благодарил (а): 4 раза

Неверно работает поиск пользователей

Сообщение Sfinexer » 21.07.2019 16:38

Проблема вот в чем, если я открываю в админке пользователей, и иду в очистку пользователей, там выбираю параметры поиска, скажем регистрация ДО такогото момента, и время последнего посещения ДО какогото момента, то поиск выдает ничего((( тоесть пользователей не найдено.

Но если я нажимаю "найти пользователя" в томже "очистка пользователей" и ввожу такиеже параметры поиска, то пользователи находятся.

Вот я снял видеоролик процесса, где сделал указанные процедуры, и продемонстрировал ошибку.

Sfinexer
phpBB 1.2.0
Сообщения: 14
Зарегистрирован: 16.06.2019 20:19
Благодарил (а): 4 раза

Re: Не верно работает поиск пользователей

Сообщение Sfinexer » 21.07.2019 16:55

А где же файл видеоролика, в нем же все основное, начиная от версии форума, и показано как воспроизвести ошибку.
Прикладываю повторно...
А я понял по размеру не вышло,
кинул на яднекс диск https://yadi.sk/i/Zg2HxnezKVN45A

Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 9754
Зарегистрирован: 08.08.2011 2:02
Благодарил (а): 175 раз
Поблагодарили: 2718 раз

Re: Не верно работает поиск пользователей

Сообщение Татьяна5 » 21.07.2019 17:19

Основное пишут текстом.
Заполните шаблон запроса

Sfinexer
phpBB 1.2.0
Сообщения: 14
Зарегистрирован: 16.06.2019 20:19
Благодарил (а): 4 раза

Re: Не верно работает поиск пользователей

Сообщение Sfinexer » 21.07.2019 17:23

Описание проблемы: Не верно работает выборка пользователей
Произведенные изменения, после которых начались неполадки: Изменения отсутсвуют
Версия phpBB: 3.2.7
Используемые стили: Любой
Используемые расширения: Не влияет
Версия PHP:: 7.2.15
Используемая СУБД и её версия: SQLite 3.20.1
Ссылка на конференцию: http://tiven.ru/index.php
Есть ли у вас тестовый аккаунт: Нет
Использовался ли поиск для решения проблемы:
Если да, то какие запросы вы использовали:

Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 9754
Зарегистрирован: 08.08.2011 2:02
Благодарил (а): 175 раз
Поблагодарили: 2718 раз

Re: Не верно работает поиск пользователей

Сообщение Татьяна5 » 21.07.2019 17:28

Sfinexer писал(а):
21.07.2019 17:23
Используемые расширения: Не влияет
Проверяли? Отключали все расширения?

Sfinexer
phpBB 1.2.0
Сообщения: 14
Зарегистрирован: 16.06.2019 20:19
Благодарил (а): 4 раза

Re: Не верно работает поиск пользователей

Сообщение Sfinexer » 21.07.2019 17:32

Татьяна5 писал(а):
21.07.2019 17:28
Проверяли? Отключали все расширения?
Татьяна, тут на вид ошибка не в расширениях, их кстати минимум, точнее одно, не допуск постов с ссылками на иные ресурсы.
Поиск из "Очистка списка пользователей" не выдает пользователей если пользователь зарегистрировался, но нет у него даты последнего визита.

А поиск по параметрам через "[ Найти пользователя ]" дает пользователей у которых отсутствует запись о последнем визите на форум. На видео это видно в виде прочерка.

Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 9754
Зарегистрирован: 08.08.2011 2:02
Благодарил (а): 175 раз
Поблагодарили: 2718 раз

Re: Не верно работает поиск пользователей

Сообщение Татьяна5 » 21.07.2019 19:08

Отключают все расширения, после этого чистят кеш и проверяют. Если ошибка не пропадает, тогда точно дело не в расширениях, а так это самое первое в чём бывает дело

Sfinexer
phpBB 1.2.0
Сообщения: 14
Зарегистрирован: 16.06.2019 20:19
Благодарил (а): 4 раза

Re: Не верно работает поиск пользователей

Сообщение Sfinexer » 21.07.2019 19:21

Татьяна5 писал(а):
21.07.2019 19:08
Отключают все расширения, после этого чистят кеш и проверяют. Если ошибка не пропадает, тогда точно дело не в расширениях, а так это самое первое в чём бывает дело
Я нашол ошибку.

Описываю, есть код выборки в файле: includes/acp/acp_prune.php
Строка 474 и далее:

Код: Выделить всё

			// First handle pruning of users who never logged in, last active date is 0000-00-00
			if (count($active) && (int) $active[0] == 0 && (int) $active[1] == 0 && (int) $active[2] == 0)
			{
				$where_sql .= ' AND user_lastvisit = 0';
			}
			else if (count($active) && $active_select != 'lt')
			{
				$where_sql .= ' AND user_lastvisit ' . $key_match[$active_select] . ' ' . gmmktime(0, 0, 0, (int) $active[1], (int) $active[2], (int) $active[0]);
			}
			else if (count($active))
			{
				$where_sql .= ' AND (user_lastvisit > 0 AND user_lastvisit < ' . gmmktime(0, 0, 0, (int) $active[1], (int) $active[2], (int) $active[0]) . ')';
			}
Так вот запрос к базе не верен.
Я конечно пока не все тут выяснил, но если выкинуть && $active_select != 'lt'
Тем самым создается на выполнение второй запрос, то поиск происходит корректно.

Еще раз повторюсь, как я и предполагал, эта ошибка не связана с дополнениями и расширениями, а исключительно в самом ядре форума.

Я примитивно показал ее решение в лоб, однако повторюсь, надо более грамотно разбираться с самим SQL запросом, но код в котором кроется ошибка в запросе я выявил! И его наглядно продемонстрировал.

Вот видео демонстрирующее "исправление" ошибки https://yadi.sk/i/wlH75Em67LCuFw

Повторюсь, я лиш показал что она существует, а не метод ее КОРРЕКТНОГО исправления!

Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 9754
Зарегистрирован: 08.08.2011 2:02
Благодарил (а): 175 раз
Поблагодарили: 2718 раз

Re: Не верно работает поиск пользователей

Сообщение Татьяна5 » 21.07.2019 19:31

Sfinexer писал(а):
21.07.2019 16:38
время последнего посещения ДО какогото момента
Sfinexer писал(а):
21.07.2019 17:32
не выдает пользователей если пользователь зарегистрировался, но нет у него даты последнего визита.
Пока всё логично. Если пользователь не заходил вообще, то по времени посещения до какого-то момента его выдавать не должно. Т.к. времени нет
Нелогично что выдаёт при другом виде поиска

Sfinexer
phpBB 1.2.0
Сообщения: 14
Зарегистрирован: 16.06.2019 20:19
Благодарил (а): 4 раза

Re: Не верно работает поиск пользователей

Сообщение Sfinexer » 21.07.2019 19:40

Татьяна, я лиш указал что два вида поиска выдают разные результаты.
Впрочем, я считаю, что если пользователь не заходил, то поиск который "другой вид поиска" выдают мне кажется более верно.
Если надо удалить всех кто не посещал и зарегистрировался до определенного момента.

ps: можно удалить кусок строки

Код: Выделить всё

user_lastvisit > 0 AND 
Также будет выдавать тех кто не посещал.

Отправлено спустя 9 минут 14 секунд:
Да, в ваших словах, несомненно, есть логика.
Но тут в таком случае, надо или както внести в код форума дополнительный параметр "флаг что он не посещал форум", или чтото иное.
Так как, действительно, трактовка данных условий поиска выходит двоякой.

Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 9754
Зарегистрирован: 08.08.2011 2:02
Благодарил (а): 175 раз
Поблагодарили: 2718 раз

Re: Не верно работает поиск пользователей

Сообщение Татьяна5 » 21.07.2019 19:52

Код: Выделить всё

// First handle pruning of users who never logged in, last active date is 0000-00-00
Случай, когда ищет ни разу не зашедших, предусмотрен отдельно

Отправлено спустя 37 секунд:
По крайней мере, в коде поиска в админке

Sfinexer
phpBB 1.2.0
Сообщения: 14
Зарегистрирован: 16.06.2019 20:19
Благодарил (а): 4 раза

Re: Не верно работает поиск пользователей

Сообщение Sfinexer » 21.07.2019 19:56

Татьяна5 писал(а):
21.07.2019 19:53
Случай, когда ищет ни разу не зашедших, предусмотрен отдельно

Отправлено спустя 37 секунд:
По крайней мере, в коде поиска в админке
Я вам и процетировал этот кусок кода... с указанием строки.
Но на видео видно что он не работает. А работает выкинут лиш условие

Код: Выделить всё

user_lastvisit > 0 AND 
Отправлено спустя 2 минуты 17 секунд:
Иными словами, если стоит условие ДО то мы не попадем под условие

Код: Выделить всё

 && $active_select != 'lt'
А идем под код запроса

Код: Выделить всё

	$where_sql .= ' AND (user_lastvisit > 0 AND user_lastvisit < ' . gmmktime(0, 0, 0, (int) $active[1], (int) $active[2], (int) $active[0]) . ')';
В котором как я понимаю стоит условие что какраз надо чтобы он посещал форум "user_lastvisit > 0"

Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 9754
Зарегистрирован: 08.08.2011 2:02
Благодарил (а): 175 раз
Поблагодарили: 2718 раз

Re: Не верно работает поиск пользователей

Сообщение Татьяна5 » 21.07.2019 20:02

Sfinexer писал(а):
21.07.2019 19:58
он не работает
Работает ровно так, как надо
Если указана точная дата, то непосещавших выдавать не должно. Если указать дату 0000-00-00, то выдаст только непосещавших

А вот в коде другого поиска ошибка. Что есть, то есть

Sfinexer
phpBB 1.2.0
Сообщения: 14
Зарегистрирован: 16.06.2019 20:19
Благодарил (а): 4 раза

Re: Не верно работает поиск пользователей

Сообщение Sfinexer » 21.07.2019 20:03

Я предполагаю, что в данном случае, проверка что он вообще посещал форум в коде лишняя.
А именно 485 строка вместо
https://github.com/phpbb/phpbb/blob/mas ... e.php#L485

Должна выглядеть

Код: Выделить всё

$where_sql .= ' AND (user_lastvisit < ' . gmmktime(0, 0, 0, (int) $active[1], (int) $active[2], (int) $active[0]) . ')';
Наверное вы правы, тему можно закрывать, спасибо.

Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 9754
Зарегистрирован: 08.08.2011 2:02
Благодарил (а): 175 раз
Поблагодарили: 2718 раз

Re: Не верно работает поиск пользователей

Сообщение Татьяна5 » 21.07.2019 20:11

Сообщаем об ошибках phpBB 3.2.x разработчикам - верный подход там (этот ли код будет в последующих версиях движка пока непонятно, но работает)

Отправлено спустя 1 минуту 36 секунд:
Sfinexer писал(а):
21.07.2019 20:03
Я предполагаю, что в данном случае, проверка что он вообще посещал форум в коде лишняя
Специально на тестовом искала по дате за 2011 год, хотя форум создан позже. И мне выдавало результаты
Так что проверка там не лишняя

Вернуться в «Поддержка phpBB 3.2.x»