我是javascript和php的新手。我是一个管理面板,我可以选择让用户玩游戏。但问题是,每场比赛都有一个特定的时间段,比如30分钟。所以,我想要的是,如果用户已启动游戏,则必须开始倒计时,如果用户一旦从该页面切换到另一页面,则计数器必须计数,并且在30分钟后它应该结束游戏。
例如,我在http://www.examplec.com/Game1
我的倒计时30分钟将开始。如果我从那个页面切换到http://www.example.com/order
之类的另一个页面,那么计数器仍应计算总时间,当它到期时,结束它并将查询发送到数据库。
如果有人知道解决方案,请回复。我已经找到了使用会话的解决方案,但我想要更有效的解决方案。单个用户可以玩一个以上游戏的另一件事。
答案 0 :(得分:0)
当你的游戏开始时设置当前时间的会话
$_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.
}
}
答案 1 :(得分:0)
你可以做的是创建一个表来跟踪时间,这不是最有效的方法,但它是安全的。
因此,使用以下fiels创建一个名为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
传递给文件,并假设用户已注册,您可以使用session获取用户信息并返回{{1如果已经过了30分钟。
您可以将此解决方案与Satish的答案混合使用Sessions而不是数据库,并使用上面的jquery代码进行实时倒计时。
答案 2 :(得分:0)
您可以使用localStorage
尝试此操作如果要设置变量:
var name = "value";
localStorage.setItem("someVarName", name);
在任何页面中(例如页面加载时),请将其命名为:
var Name = localStorage.getItem("someVarName");