0

ユーザーがサインインしているときに、オンライン時間とコインを設定しようとしました。

ユーザーは 1 コインにつき 1 コインを獲得する必要があります。オンライン時間を秒単位で計算しましたが、コインを正しくカウントするにはどうすればよいですか?

たぶん、コインのカウントで 35 秒ごとに更新する必要がありますか?

<?php
session_start();

// Set the session if not set.
if ( !isset ( $_SESSION['startOnlineTime'])):
    $_SESSION['startOnlineTime'] = time();
endif;


$secondsOnline = (time() - $_SESSION['startOnlineTime']);
?>

私は(運がなければ)次のようなことを試しました:'

<?php
    //if updates every 35 secs, then i calculate it like: 1 (per hour) / 35 (seconds) - 1/35? correct?
    $prHour = (Double) 0.028571428571429; 
    $SQL = "UPDATE users SET coins=coins+0.15 WHERE id = '@session_id()'";
    mysql_query($SQL) or die ( mysql_error() );
?>

しかし、正しくないようです。私に何ができる?

4

1 に答える 1

0

これはおそらくあなたの問題の1つの解決策です。次のようなコンテンツを含む別の php ファイル呼び出しcounter.phpを作成します。このファイルは定期的に (この例では毎時) 呼び出されます。

counter.php

<?php
if(session_id() == '') {
    sesstion_start();
    if (!isset($_SESSION['userid'])
         return;
         // I use 'userid' to save the user info, you can use others like ip, session_id, ...

    // verify that this file is called hourly
    $t = time();
    if (isset($_SESSION['lastcheck']) && $t - $_SESSION['lastcheck'] < 3550)
         return;
         // if this script is call in the previous 1 hour (3600s), ignore this call.

    $_SESSION['lastcheck'] = time();
    /* update your database here, increment 1 coin in this user record */

}
?>

ユーザーに請求するすべてのページで、JavaScrip を使用して毎時呼び出しcounter.phpます。この例では、jQuery ライブラリを使用して支援しています。

 function charge() {
      var waitingTimes = 3600; //1 hours
      $.get("absolute/url/to/counter.php");
      setInterval(charge,waitingTimes)
 }
 $(document).ready(function(){
      charge();          
 });
于 2013-01-18T16:27:55.263 に答える