Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 页面更改时的变量值_Javascript_Php_Jquery - Fatal编程技术网

Javascript 页面更改时的变量值

Javascript 页面更改时的变量值,javascript,php,jquery,Javascript,Php,Jquery,我是javascript和php新手。我正在创建一个管理面板,其中我有一个选项供用户玩游戏。但问题是,每场比赛都有一个特定的时间段,比如说30分钟。所以,我想要的是,如果一个用户已经开始游戏,倒计时必须开始,如果用户曾经从那个页面切换到另一个页面,计数器仍然必须计数,30分钟后应该结束游戏 例如,我在http://www.examplec.com/Game130分钟的倒计时将开始。如果我从该页面切换到另一个页面,如http://www.example.com/order然后计数器仍应计算总时间,

我是javascript和php新手。我正在创建一个管理面板,其中我有一个选项供用户玩游戏。但问题是,每场比赛都有一个特定的时间段,比如说30分钟。所以,我想要的是,如果一个用户已经开始游戏,倒计时必须开始,如果用户曾经从那个页面切换到另一个页面,计数器仍然必须计数,30分钟后应该结束游戏

例如,我在
http://www.examplec.com/Game1
30分钟的倒计时将开始。如果我从该页面切换到另一个页面,如
http://www.example.com/order
然后计数器仍应计算总时间,当其过期时,结束它并将查询发送到数据库


如果有人知道解决方案,请回复。我已经找到了一个使用会话的解决方案,但我想要更有效的解决方案。还有一件事,一个用户可以玩多个游戏。

当游戏开始时,设置一个当前时间段,如下所示

$_SESSION['game_start_time'] = strtotime(date('d-M-Y g:i:s A')); // it will give you complete current timestamp.
现在检查每一页,包括

if(isset($_SESSION['game_start_time']))
{
   $game_start_time = $_SESSION['game_start_time'];
   $current_time = strtotime(date('d-M-Y g:i:s A'));
   $time_diff = $current_time - $game_start_time;

   if($time_diff>(30*60))
   {
        //expire 30 minutes your code is here
   }
   else
   {
           // action if require to do when below 30 minutes of game start.
   }   
}

您可以做的是创建一个表来记录时间,这不是最有效的方法,但它是安全的

因此,创建一个名为
gametrack
的新表,包括以下字段:

id
userid
gameid
timestarted

因此,当用户开始游戏时,您会插入一条包含用户信息的记录

接下来,您需要编辑游戏页面。在游戏页面中,您可以放置一个jquery代码,以请求及时更新

function gameStatus(){
     $.ajax({
    url: 'status.php?gid=[GAMEID]',
    success: function(data) {
        if(data == 1) {
            //DO SOMETHING, REFRESH THE PAGE, STOP THE GAME ETC
        }
    }
});
}

setInterval("gameStatus()",10000);
上面的代码将每隔10秒请求
status.php
,您需要将
gameid
传递到文件,并且假设用户已注册,您可以使用会话获取用户信息,如果30分钟过去了,则返回
1

您可以将此解决方案与Satish的答案混合使用会话而不是数据库,并且仍然可以使用上面的jquery代码进行实时倒计时。

您可以使用

要设置变量时:

var name = "value";
localStorage.setItem("someVarName", name);
在任何页面中(如加载页面时),获得如下内容:

var Name = localStorage.getItem("someVarName");
浏览器兼容性


您可以为您的时间计数维护一个会话变量。正如@SatishSharma所评论的,您可以使用会话或cookie来跟踪时间。是的,我正在回答中对此进行解释。请稍等。@SatishSharma是的,我有这个想法,我只是想知道是否还有其他事情。您可以分享您处理会话变量的方法吗?您可以维护会话或cookie,以便在整个网站上保存这些数据。