Переменная сеанса PHP не обрабатывается, но ISSET говорит, что она работает & 0

Итак, у меня есть счетчик, который просто подсчитывает секунду за раз. Этот второй счетчик я хочу, чтобы это была моя переменная сеанса. Это плохая идея? Также, когда я делаю isset на моей второй странице, он говорит на моей второй странице «Ваша сессия работает 0». Я гарантировал, что в начале моей страницы нет лишних белых мест вокруг моей php-сессии, но я не думаю, что проблема. Я также пробовал применять четкий интервал для моей функции countUP, но он не работает? Я очень благодарен за любую помощь.

страница one.php

<?php session_start(); if(!isset($_SESSION["counter"])){ //checkingto see if a variable called my score exist $_SESSION["counter"]=0; //if not, initates this variable with 100 } ?> 

страница one_javascript

 <script type="text/javascript"> var counter=0; //initiates score to 100 var timer_container = document.getElementById("timer_container"); //get div that wil display the score timer_container.innerHTML="Time = " + counter; //popo var timer; function countUP() { counter = counter +1;//increment the counter by 1 //display the new value in the div document.getElementById("timer_container").innerHTML = counter; } </script> 

page2.php

  <?php session_start(); if(isset($_SESSION['counter'])){ echo "Your session is running ".$_SESSION['counter']; } else { echo "Session not running";} ?> 

page2 javascript

 <script type="text/javascript"> var counter=<?php echo $_GET['counter'];?>; //initiates score to 100 var timer_container =document.getElementById("timer_container"); //get div that will display the score timer_container.innerHTML="Time="+counter; //var timer; function countUP() { counter = counter+1; //increment the counter by 1 //display the new value in the div document.getElementById("timer_container").innerHTML = counter; } </script> 

Я использовал это раньше в другой игре, и он отлично работает. благодаря

Не видели ваш html, но вы могли бы что-то пропустить, чтобы запустить и запустить функцию таймера – это может отсутствовать:

  <body onload="intTimer = setInterval(function(){ countUP() }, 1000);"> 

Также я не совсем понимаю, как вы отправляете страницу, но я не вижу ничего, что передает значение таймера переменной сеанса. Если вы разместите форму на своей странице с помощью кнопки отправки, вы можете получить значение скрытого ввода с его значением, заданным с помощью javascript. Вы можете отправить страницу автоматически, используя submit(); в вашем javascript, когда счетчик достигнет определенного номера, если вы хотите:

page1.html (можно называть page1,php но на стр. 1 нет php, поэтому на самом деле это не обязательно)

  <!DOCTYPE html> <html> <head> <title>Page 1</title> <script language="javascript"> var intTimer = ''; var counter = 0; function countUP(){ counter++; //increment the counter by 1 //display the new value in the div document.getElementById("timer_container").innerHTML = "Session Time Counter: " + counter; document.getElementById("tim_val").value = counter; } </script> </head> <body onload="intTimer = setInterval(function(){ countUP() }, 1000);"> <form name="form" id="form" action="page2.php" method="post"> <input type="hidden" id="tim_val" name="tim_val" value="" /> <input type="submit" name="submit"/> </form> <div id="timer_container">Session Time Counter: 0</div> </body> </html> 

Вы не ссылаетесь на $_SESSION["counter"] на странице 1, и вы инициализируете 0 не 100 в своем JavaScript.

На вашем скрипте page2.php вашей страницы 2 вы можете это сделать – вы также можете отправить эту страницу себе, если только часть содержимого будет изменена, но таймер должен быть продолжен или зарегистрирован в момент отправки.

 <?php session_start();?> <!DOCTYPE html> <html> <head> <title>Page 2</title> <?php if(!isset($_SESSION["counter"])){ //if not, initiate this variable with 100 $_SESSION["counter"] = 100; }else{ // give it the posted value $_SESSION["counter"] = (int) $_POST['tim_val']; } ?> <script language="javascript"> clearInterval(intTimer); var intTimer = ''; var counter = <?php echo $_SESSION["counter"]; ?>; function countUP(){ counter++; //increment the counter by 1 //display the new value in the div document.getElementById("timer_container").innerHTML = "Session Time Counter: " + counter; document.getElementById("tim_val").value = counter; } </script> </head> <body onload="intTimer = setInterval(function(){ countUP() }, 1000);"> <form name="form" id="form" action="page2.php" method="post"> <input type="hidden" id="tim_val" name="tim_val" value="<?php echo $_SESSION["counter"]; ?>" /> <input type="submit" name="submit"/> </form> <div id="timer_container">Session Time Counter: <?php echo $_SESSION["counter"]; ?></div> </body> </html> 

И в вашем JavaScript page2.php вам необходимо clearInterval() и перезапустить его. http://www.w3schools.com/jsref/met_win_clearinterval.asp

  var counter=<?php echo intval($_SESSION["counter"]);?>; //initiates score to submitted value 

Вам, вероятно, не нужно будет использовать переменную сеанса, поскольку вы используете скрытый ввод, поэтому вы можете использовать:

  var counter=<?php echo intval($_POST["counter"]);?>; //initiates score 

Вы также можете добавить 1 к нему, чтобы приблизительно рассчитать задержку его отправки

  var counter = <?php echo $_SESSION["counter"] + 1; ?>; var counter=<?php echo intval($_POST["tim_val"] + 1);?>; //initiates score 

Вы можете использовать GET но я просто предпочитаю POST .

Это немного больше о скрытых входах: многократно возвращать и эхо-входы из текстового поля

и немного больше о таймерном скрипте: http://www.w3schools.com/js/tryit.asp?filename=tryjs_timing_clock