Я создаю приложение, которое подсчитывает, сколько времени пользователь тратит на просмотр видео YT на моем сайте. По времени, позже они получат какие-то награды.
Здесь есть проблема безопасности: как я могу помешать им одновременно наблюдать за двумя игроками? Я пытался использовать решения, такие как:
$_SESSION
И ничего не сработало. После некоторого времени исследований я понял, что это всего лишь front-end
и я не могу передать эту информацию на другие компьютеры, браузеры и т. д.
Итак, я дал шанс базе данных. Его нельзя так легко изменить, как «Локальное хранилище» или «Сеансовое хранилище», однако у него все еще есть некоторые проблемы, которые я перечислю ниже.
Изображение пользователь заходит на сайт и начинает воспроизведение видео. С помощью YT Embed API
Я запрограммировал так, чтобы записи базы данных изменились на «active_players» 1. И это число не может быть больше 1. Все работало, как ожидалось, пока не произошло одно:
Я не могу вычесть 1 из 1, если пользователь закрывает браузер, компьютер внезапно выключается или вкладка браузера закрывается.
Да, я мог бы бросить окно предупреждения, используя window.onbeforeunload
метод, но это можно легко обойти, просто установив флажок, чтобы блокировать эти типы сообщений. Это также не решит неожиданное поведение компьютера, такое как выключение и т. Д.
У меня есть идея, как я мог бы сделать это теоретически:
Прежде всего, отправьте AJAX
запрашивает базу данных сервера каждую 1 секунду и что-то делает с записями базы данных (обновляет или вставляет и удаляет некоторые данные).
Когда используешь cron jobs
каждая 1-секундная проверка результатов базы данных, если они все еще обновляются или нет.
Я не знаю точно, как это должно быть сделано, и я впервые работаю с такими вещами.
Похожий пост на мой: Как узнать, находится ли пользователь на сайте или в автономном режиме?
Может быть, у нас уже есть намного лучшие альтернативы, которых я пока не знаю 🙂 Помощь будет принята с благодарностью. Спасибо.
Задача ещё не решена.
Других решений пока нет …