2013-12-11 3 views
3

Я новичок в javascript и php. Я создаю административную панель, в которой у меня есть опция для того, чтобы пользователь мог играть в игру. Но проблема в том, что каждая игра имеет определенный период времени, говорят 30 минут. Итак, я хочу, чтобы, если пользователь начал игру, нужно запустить счетчик, и если пользователь однажды переключится с этой страницы на другую страницу, все равно счетчик должен подсчитывать, и через 30 минут он должен закончить игру.значение переменной на смену страницы

Например, я нахожусь на http://www.examplec.com/Game1, начнется отсчет 30 минут. Если я переключусь с этой страницы на другую, например http://www.example.com/order, то счетчик должен по-прежнему считать общее время и время его истечения, завершить его и отправить запрос в базу данных.

Просьба ответить, если кто-либо знает решение. Я уже нашел решение с использованием сеанса, но я хочу более эффективное решение. Еще одно, что один пользователь может сыграть более 1 игры.

+2

Вы можете сохранить переменную сеанса для подсчета времени. –

+0

Как прокомментировал @SatishSharma, вы можете называть сеанс или файлы cookie, чтобы отслеживать время. –

+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. 
    } 
} 
0

Что вы могли бы сделать, это создать таблицу для отслеживания времени, это не самый эффективный способ, но он был бы безопасным.

Так создать новую таблицу с именем gametrack со следующими fiels:

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); 

код выше будет просить status.php каждые 10 секунд, вы должны передать gameid в файл и при условии, что пользователь зарегистрирован вы можете использовать сессию, чтобы получить информацию о пользователе и вернуть 1 если таковые 30 минут прошли.

Вы можете смешать это решение с ответом Сатиша на использование сеансов вместо баз данных и по-прежнему получать счетчик в реальном времени с помощью кода jquery выше.

0

Вы можете попробовать это с localStorage

Если вы хотите установить переменную:

var name = "value"; 
localStorage.setItem("someVarName", name); 

И любой страницы (например, при загрузке страницы), получить его люблю:

var Name = localStorage.getItem("someVarName"); 

Совместимость с браузером caniuse.com/namevalue-storage

Demo

Смежные вопросы