-1

ちょっとしたゲームが進行中のウェブサイトをデザインしています。参加する各ユーザーは、99 分以内に完了する必要があります。それ以外の場合は、ゲーム オーバー状態が表示されます。これは、jQuery の投稿を使用してこれまでにできたことです。

タイマー表示できました。PHP では、目標時間を99*60秒に設定しましたが、開始時間を 0 に設定することはできません。これらの差をカウントダウンの値にするためです。

さらに、各ユーザーはページを終了できるため、ページを離れた時間を保存できるようにしたいと考えています。私ができることは、ログオフ時にカウントダウン値、たとえば 5845 を DB に保存することだけです。jQuery投稿への呼び出しごとにテーブルを更新しようとしましたが、悪化するだけです.

これが私のjQueryです:

function countdown() {
  var i = (new Date().getTime() / 1000) + (99 * 60);

  setTimeout(function () {
    $.post(\'countdown.php\',{target:i},function(data){
      $('#countdown').html(data);
    });
    countdown();
  },1000);
}

countdown();

PHPは次のとおりです。

if (!empty($resm['Countdown']) || $resm['Countdown'] >= 0) {
  $target = (99 * 60);
  $countdown = ($target - $current);
  $_SESSION['currenttime'] = $countdown;
  $hours = floor($countdown / 3600);
  $min = floor($countdown / 60);
  $r_min = floor(($countdown - ($hours * 3600)) / 60);
  $sec = floor($countdown - ($min * 60));
  if ($min == 0) {
    echo $target.'   '.$current.'  '.$countdown;
    echo '<br/>'.$min.' minutes '.$sec.' seconds left';
  } else {
    echo 'Time Over';
    $sql = "UPDATE bs10000099 SET Upgradedlevel='2',Activated='2',Countdown='5940' WHERE        MemberID='$memberid'";
    mysql_query($sql);
  }
}

開始時間を設定する方法やcountdown()、更新ページでの再起動を防ぐ方法がわかりません。

4

1 に答える 1

0

どのようなセキュリティが必要かはわかりませんが、JSはサーバーではなくコンピュータから時間を取得するため、Javascriptから時間を取得することは実際には安全ではありません。

あなたの例では、ゲームをプレイし、残り10分になるまで待ってから、デスクトップで時間をロールバックするとリセットされます。または、1年ロールバックして、残り100000分にします。

サーバー時間を使用することをお勧めします。

これが私がすることです:

テストが開始されたら、UNIX時間+90分を取得します。これはあなたに最後の時間を与えるでしょう。

PHP

    if (!isset($_SESSION['end'])) {
        $_SESSION['end'] = strtotime("+90 minutes");
    }


    $remaining = $_SESSION['end'] - time();

    if ($remaining > 0) {
        echo json_encode(array(
            "remaining" => $remaining
        ));
    } else {
        // finished! write code here. 
    }

次に、単純な$ .getJSON()を実行して、残りの秒数を取得して表示できます。

「終了」時間を守ったので、ユーザーが離れてもタイマーは継続します。

于 2012-12-20T16:40:28.823 に答える