2015-12-12 2 views
-2

Ниже приведен пример кода PHP. Я ожидаю, что переменная сеанса 't' увеличит свое значение при вызове функции обновления. Однако, когда я запускаю код, я продолжаю получать вывод как значение: 1. Что мне следует делать, чтобы значение сохранялось в переменной сеанса?В PHP переменная сеанса не сохраняет значение. Что не так?

<?php 
session_start();  
if(!isset($_SESSION['t'])) { 
    $_SESSION['t'] = 0; 
} 
?> 
<div id="test" class="test"></div> 

<script src="http://code.jquery.com/jquery.js"></script> 

<script> 
    function update() { 

     var ct = "<?php echo $_SESSION['t'] += 1 ?>"; 

     <?php echo "Value: " . $_SESSION['t']; ?>; 

     $("#test").html(ct); 
    } 

    $(document).ready(function() { 
     setInterval('update()', 1000); 
    }); 
</script> 
+1

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

+0

Помните, что СЕССИЯ живет на сервере, а также PHP. Но Javascript работает в браузере. – RiggsFolly

+0

No @Raahim. Я пытаюсь сохранить значение внутри переменной сеанса на одной странице и получить доступ к ней на другой странице. Выше - это простой код, который я написал, чтобы понять работу переменных сеанса. Я не понимаю, почему приведенный выше код не работает. Первая страница обновляет значение переменной сеанса каждые несколько минут. На второй странице не отображается обновленное значение, если страница не обновлена, и я не хочу обновлять страницу. Любая помощь приветствуется. Благодарю. –

ответ

0

Поместите session_start() в самом начале вашего скрипта, прежде, чем любой выход

<?php 
    session_start(); 

    // if you automatically set SESSION['t'] to 0 when the page loads, it will never increment 
    // check if the SESSION exists, and if it doesn't, then we create it 
    if(!isset($_SESSION['t'])) { 
     $_SESSION['t'] = 0; 
    } 
?> 


<div id="test" class="test"></div> 

<!-- it's recommended to load scripts at the end of the page --> 
<script src="http://code.jquery.com/jquery.js"></script> 

<script> 
    function update() { 
     // you had some formatting issues in here... 

     // shortcut: using +=1 will take the current value of $_SESSION['t'] and add 1 
     var ct = "<?php echo $_SESSION['t'] += 1 ?>"; 

     <?php echo "Value: " . $_SESSION['t']; ?>; 

     $("#test").html(ct); 
    } 

    $(document).ready(function() { 
     setInterval('update()', 1000); 
    }); 
</script> 

UPDATE: Это пример того, что будет делать то, что я думаю, что вы ищете. При загрузке страницы будет отображаться значение $_SESSION['t'], а затем при каждом нажатии кнопки обновления увеличивать значение $_SESSION['t']. Проверка ошибок отсутствует, это просто очень простой пример, чтобы показать вам, как это работает.

<?php 
    session_start(); 

    if(!isset($_SESSION['t'])) { 
     $_SESSION['t'] = 0; 
    } 
?> 


<div id="test" class="test"></div> 

<button type="button" id="update">Update</button> 


<script src="http://code.jquery.com/jquery.js"></script> 

<script> 
    $(document).ready(function() { 

     // create the ct varaible 
     var ct = <?php echo $_SESSION['t']; ?>; 

     // display the value in the #test div 
     $("#test").text(ct); 

     // when the update button is clicked, we call ajax.php 
     $("#update").click(function(){ 
      $.post("ajax.php", function(response){ 

       // display the returned value from ajax.php 
       $("#test").text(response); 
      }); 
     }); 

    }); 
</script> 

ajax.php

<?php 

session_start(); 

// increment the session by 1 
$_SESSION['t'] += 1; 

// return the result 
echo $_SESSION['t']; 
+0

Спасибо! Но значение не обновляется, если страница не обновляется. –

+0

Правильно, это то, что вам говорит код. Вам нужно будет написать функцию или обработчик событий, чтобы выполнить обновление 'onclick' или что-то еще ... – timgavin

+0

почему голосующий голос? – timgavin

Смежные вопросы