Фантомные клики в мобильной версии

InstantCMS 2.X

У пользователей начали сами по себе кликаться разные функциональные кнопки

#1 8 октября 2024 в 00:34

Версия InstantCMS v2.10.1

Всем привет! 

Прошу прощения, если моя проблема покажется бредом, но ситуация постепенно набирает массовость. 

У меня литературный проект на движке InstantCMS. Многий функциональные кнопки вынесены вверх страницы. Как например: 

  • Редактировать
  • Удалить (только для админа)
  • Удалить в корзину

Изображение

И вот последние несколько дней начали поступать жалобы от пользователей, что их публикации пропадают. 

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

По логам видно, что страницы помещены в корзину именно самими пользователями. То есть это не взлом. 

Я бы все списал на глючный сенсор, но уж слишком много совпадений, у 3-4 пользователей не могло произойти такое одновременно. 

Также наводит подозрение на системность, то, что у всех потерпевших модель смартфона — Samsung:

  • Samsung Galaxy A14
  • Samsung Galaxy A01
  • Samsung G S21

Браузеры тоже у всех разные:

  1. Chrome
  2. Samsung Internet

Можете посоветовать куда копать? 

Какие данные еще предоставить? 

Может быть кто-то сталкивался с такой проблемой?

UPD: возможно это связано. 

Заметил, что если нажать удалить на любой странице с десктопа — открывается всплывающее окно с выбором подтвердить удаление или отменить. 

И если даже нажать Отмена, публикацию будет удалена. То есть получается, что не важно, что выбрать — публикация удаляется. 

А вот если нажать на esc, то есть отменить всплывающее окно, то публикация не пропадает. То есть если не делать выбор, то все ок. 

#2 8 октября 2024 в 10:56

Может всё дело в стилях. Может кнопку удаления и не видно на телефоне, но при скроле или нажатии на что то другое эта кнопка нажимается или событие в js срабатывает. Нужно решить вопрос с десктопной проблемой при отмене удаления и возможно отпадёт и первая проблема.

#3 8 октября 2024 в 12:52

Версия InstantCMS v2.10.1

Litclubbs

У меня до текущей версии 2.16.Х (в ней её пофиксили) на доске объявлений был интересный баг… Объявления сами пропадали после редактирования пользователем своих объявлений.

Выглядело это примерно так (это я описывал баг разработчику):

В доступах стоит:

«Выбор срока окончания публикации» — Дни

«Максимальный срок публикации, дней» — 90

Теперь если ЗАРЕГИСТРИРОВАННЫЙ ПОЛЬЗОВАТЕЛЬ добавляет объявление, 

в БД в колонке «date_pub_end» появляется правильная дата, то есть дата окончания публикации через 90 дней.

НО если пользователь через 2-3 минуты отредактирует это объявление, в БД в колонке «date_pub_end» дата изменится на «вчерашнюю» и объявление становится «просроченным», а значит удаляется при выполнении задачи по удалению просроченного контента...

Вот что ответил разработчик доски объявлений:

Баг была со стороны системы, в файл system\controllers\content\actions\item_edit.php в строку 201 добавить
 
$date_pub_end_time = strtotime($item['date_pub_end']);
 
Так как этой переменной нет выше, но обращение к нему есть

Возможно я ошибаюсь и у вас не такая проблема и дело действительно в стилях, НО вот такая проблема была у меня и объявления пропадали...

Добавлено спустя 24 минуты

ЗЫ если проблема такая же, то можно этот файл скачать из крайних релизов, посмотреть, как это исправлено там и поправить в своём...

#4 8 октября 2024 в 16:17

Нужно решить вопрос с десктопной проблемой при отмене удаления и возможно отпадёт и первая проблема.

Lora

Тоже думаю, что это первопричина. 

Однако не понимаю, как это лечить. 

Было подозрение, что может быть из-за CloudFlare дублировался редирект или запрос, и нажав на удаление один раз, по факту нажималось два раза и поэтому было не важно, что выбираю в меню подтверждения удаления. Но вроде как все редиректы и работы Cloudflare настроены корректно. Техподдержка хостинг провайдера подтвердили это. 

Пока больше идей нет. 

Но есть вот еще такой момент в Network при клике на удалить в корзину: 
Изображение

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

Изображение

#5 8 октября 2024 в 16:19

 RSN, вполне может быть. Только не объясняет вторую проблему с отменой удаления. Хотя может это и не связанные проблемы. Я версию не заметил)

#6 8 октября 2024 в 16:51

Возможно я ошибаюсь и у вас не такая проблема и дело действительно в стилях, НО вот такая проблема была у меня и объявления пропадали...

ЗЫ если проблема такая же, то можно этот файл скачать из крайних релизов, посмотреть, как это исправлено там и поправить в своём...

RSN

Спасибо за ответ! Интересное предположение.
у меня что-то однозначно происходит, когда первично нажимается команда удалить. 

На самих страницах у меня не разрешено применять параметр время жизни. То есть по идее дата когда публикация должны скрываться вообще никогда не ставится. 
Сейчас проверил, дата удаленных страниц никак не меняется. Дата окончания публикаций всегда остается пустой. 

Плюс в документе, что вы привели, у меня уже прописано эта строка. 

    $date_pub_time = strtotime($item['date_pub']);
    $date_pub_end_time = strtotime($item['date_pub_end']);
    $now_time = time();
    $now_date = strtotime(date('Y-m-d', $now_time));
    $is_pub = true;

#7 8 октября 2024 в 20:59

Если 503 нужно смотреть код

#8 9 октября 2024 в 07:26

Если 503 нужно смотреть код

Lora

Любопытно, что несмотря на эту ошибку команда выполняется. Даже слишком хорошо — публикация удаляется не смотря на подтверждение. 

Есть ощущение, что на момент всплывания предупреждения публикация уже по факту удалена. 

Что именно нужно показать в качестве кода?

Если 503 нужно смотреть код

Lora

Сейчас попробовал полностью отключить проксирование Cloudflare 

Ошибка 503 при нажатии удалить в корзину пропало. Точнее эта команда вообще не выполняется. Предположу, что она и не должна выполняться, пока нет подтверждения во всплывашке подтверждения. 

Вот так происходит когда все работает с отключенным Cloudflare 

Изображение

А вот так, когда Cloudflare  включен

Изображение

Также перестало игнорироваться подтверждение. Все работает.

Но без Cloudflare  сайт работать тоже не сможет. 

Попробую поиграть с SSL/TLS-шифрование — выставить гибкий режим. 

Добавлено спустя 6 часов

UPD Нашел решение проблемы: 
serverfault.com/questions/1165854/503-response-to-prefetch-requests-nginx-php

Процитирую, вдруг ссылка будет заблочена

У меня была та же проблема, и после дальнейшего расследования я узнал, что это бета-функция в Cloudflare, которая называется «Speed ​​Brain». Она предписывает браузеру инициировать запрос предварительной выборки при любой будущей навигации.

Изображение

Я не понял, как выполнить запрос предварительной выборки, чтобы он был успешным, поэтому я отключил эту функцию на данный момент, так как она не важна для меня на данном этапе. Вероятно, в ответе вашего сервера нужно задать дополнительные заголовки, чтобы указать Cloudflare на необходимость кэширования документа.

Cloudflare заявляет следующее:

Запросы предварительной выборки никогда не достигнут исходных серверов. Запросы предварительной выборки обслуживают только контент, хранящийся в кэше Cloudflare. Если контент отсутствует в кэше, запрос предварительной выборки не будет продолжен на исходных серверах. Без этой защиты состояние исходного сервера может быть изменено, несмотря на то, что ответ предварительной выборки не отображается в браузере. Примером этого может быть запрос предварительной выборки GET на URL выхода, непреднамеренно вызывающий действие выхода на сервере.

#9 9 октября 2024 в 10:32

Но без Cloudflare  сайт работать тоже не сможет. 

Litclubbs

Это почему?

Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.