页面更改的变量值

时间:2013-12-11 06:51:02

标签: javascript php jquery

我是javascript和php的新手。我是一个管理面板,我可以选择让用户玩游戏。但问题是,每场比赛都有一个特定的时间段,比如30分钟。所以,我想要的是,如果用户已启动游戏,则必须开始倒计时,如果用户一旦从该页面切换到另一页面,则计数器必须计数,并且在30分钟后它应该结束游戏。

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

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

3 个答案:

答案 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");

浏览器兼容性caniuse.com/namevalue-storage

Demo