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