会话变量为N-1而不是N.

时间:2012-10-24 19:41:11

标签: php jquery

我在jquery中有一个计时器,我想在刷新页面时保留该值。我正在使用php会话变量和一些ajax。但是当我刷新它时会保留N-1而不是N的值。

示例:

当我刷新没有任何反应时,我才20秒。然后,当我在18秒刷新时,输出的是20秒​​

以下是代码:

<?php
session_start();
if (isset($_GET['number'])) {
$_SESSION['timer']=$_GET['number'];
}
?>
<!DOCTYPE html>
<html>
    <head>


 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
  <link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/>
  <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>
  <script src="cookie.js"></script>

        <script>

$(window).unload(function() {

var number = $('#test').text();
alert(number);
          $.get('divb.php',{number:number},function(resultat){
                        return false;                                                       
                });



});         


$(document).ready(function(){


var numb = 30 ;                 
var numba = 100 ; 

function comptage() {

setTimeout(comptage,1000);
$('#test').html(numb);
$("#progressbar").progressbar({ value: numba });

numb -- ;
numba = numba - (numba/numb) ;


if (numb < 0 )
{

numb = 0 ; 
numba = 0 ;
}



};

comptage();












    });     







            </script>   


<style >

#affichage_point

{
position:relative;
    background-color:  #FFFFFF;
 border: 1px solid  #7375D8;
width:450px ; 
height:5px ; 
    margin-left: 200px;
    margin-top: 100px;

   padding:30px;

}

   #progressbar  {

  width : 400px ;

  }


  #progressbar > div {

  background: #7375D8;

  }


#bardivs {
    width:400px; 
     position:absolute;
      top:12px;
      left: 50px;


     }

#test {
    position:absolute;
    top:5px;
    left:5px;
}



</style>






   </head>


    <body>


    <div id = "affichage_point">
    <div id="bardivs">
    <div id="progressbar"></div>
    <div id="test"></div>
    </div>
    </div>


<?php   if (isset($_SESSION['timer'])) { ?>
     <div id ="r6"><?php echo $_SESSION['timer'] ?> </div> <br/> 
     <?php } ?>


        </body>
</html>

1 个答案:

答案 0 :(得分:0)

只需使用此代码:

因此,我们只保留第一次访问时间并生成已用时间。无需将此变量存储在查询(GET)

session_start();

if (!isset($_SESSION['start_time'])) {
    $_SESSION['start_time'] = time();
}

$elapsedTime = time() - $_SESSION['start_time'];

但是你必须以某种方式重置start_time,猜测用户何时决定重新开始