Таймер обратного отсчета в PHP перезапускается - PullRequest
0 голосов
/ 16 июня 2019

Я пишу таймер обратного отсчета с использованием javascript в проекте php-mysql, таймер обратного отсчета работает правильно, но проблема в том, что когда пользователь взаимодействует с игрой, таймер перезапускается. Должен ли я что-то делать с сессиями php?

Есть идеи?

     <div>Time left = <span id="timer"></span></div>
     <script>
       document.getElementById('timer').innerHTML = 01 + ":" + 00;
       startTimer();

       function startTimer() {
         var presentTime = document.getElementById('timer').innerHTML;
         var timeArray = presentTime.split(/[:]+/);
         var m = timeArray[0];
         var s = checkSecond((timeArray[1] - 1));
         if(s==59){m=m-1}
         if(m<0){alert('You lose,click reset')}                      
         document.getElementById('timer').innerHTML =m + ":" + s;
         setTimeout(startTimer, 1000);
       }

       function checkSecond(sec) {
       if (sec < 10 && sec >= 0) {sec = "0" + sec}; // add zero in front 
       of numbers < 10
       if (sec < 0) {sec = "59"};
       return sec;
       }
     </script>

1 Ответ

0 голосов
/ 17 июня 2019

Судя по вашим комментариям к основному вопросу, есть способы, которыми вы можете это сделать, но я не совсем уверен, что это идеальное решение для вас.

Когда пользователь впервые запускает игру и вы перенаправляете их с помощью действия php, я предполагаю, что это запускает начальный таймер, и последующее взаимодействие с игрой также сбрасывает таймер.

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

Вы можете передавать переменные из php в JS с помощью:

let js_start_time_variable = "<?=php_start_time_variable?>";

Это решение не очень красивое. Я бы порекомендовал использовать что-то вроде vuejs, чтобы сохранить всю игру в одностраничном приложении без обновления страницы до php.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...