• Bannato User Attivo

    Attesa lato server caricamento pagina php

    Ciao ragazzi,
    ho un urgente bisogno di uno script o una condizione php che dopo
    tot di tempo carichi lo script php.
    Se lo faccio lato client possono imbrogliare se lo faccio lato server saranno costretti ad aspettare.
    VI faccio un esempio:
    Se i visitatori visitano la pagina w w w .site.com/ciao.php
    si aggiungono dei punti, ma questi punti devono essere assegnati
    ogni 30 secondi, e loro fanno il refresh con tutto il redirect a tempo (lato client) cosi barando, non c'è un modo per farli attendere lato server?? o un modo + sicuro??
    rispondetemi! grazie in anticipo!!


  • User Attivo

    Ciao,
    se utilizzi un database per i punti, memorizza insieme al punteggio anche l'ora in cui viene aggiornato incrementando i punti solo se dall'ora dell'ultimo aggiornamento sono passati 30 secondi.
    A mio avviso questa è la soluzione più sicura per evitare imbrogli.

    Alessandro


  • Bannato User Attivo

    Non si può fare una cosa simile?

    
    <?php
    /**
     * login.php
     *
     * @version 1.0
     * @copyright 2008 by ?????? for XNova
     */
    define('INSIDE'  , true);
    define('INSTALL' , false);
    $InLogin = true;
    $ugamela_root_path = './';
    include($ugamela_root_path . 'extension.inc');
    include($ugamela_root_path . 'common.' . $phpEx);
     includeLang('login');
     if ($_POST) {
      $login = doquery("SELECT * FROM {{table}} WHERE `username` = '" . mysql_escape_string($_POST['username']) . "' LIMIT 1", "users", true);
      if ($login) {
       if ($login['password'] == md5($_POST['password'])) {
        if (isset($_POST["rememberme"])) {
         $expiretime = time() + 31536000;
         $rememberme = 1;
        } else {
         $expiretime = 0;
         $rememberme = 0;
        }
        @include('config.php');
        $cookie = $login["id"] . "/%/" . $login["username"] . "/%/" . md5($login["password"] . "--" . $dbsettings["secretword"]) . "/%/" . $rememberme;
        setcookie($game_config['COOKIE_NAME'], $cookie, $expiretime, "/", "", 0);
        unset($dbsettings);
        header("Location: ./frames.php");
        exit;
       } else {
        message($lang['Login_FailPassword'], $lang['Login_Error']);
       }
      } else {
       message($lang['Login_FailUser'], $lang['Login_Error']);
      }
     } else {
      $parse = $lang;
      $query = doquery('SELECT username FROM {{table}} ORDER BY register_time DESC', 'users', true);
      $parse['last_user'] = $query['username'];
      $query = doquery("SELECT COUNT(DISTINCT(id)) FROM {{table}} WHERE onlinetime>" . (time()-900), 'users', true);
      $parse['online_users'] = $query[0] + 9;
      $parse['users_amount'] = $game_config['users_amount'];
      $parse['servername'] = $game_config['game_name'];
      $parse['forum_url'] = $game_config['forum_url'];
      $parse['PasswordLost'] = $lang['PasswordLost'];
      $page = parsetemplate(gettemplate('login_body'), $parse);
      display($page, $lang['Login']);
     }
    // -----------------------------------------------------------------------------------------------------------
    // History version
    ?>
    
    

    questo è il login di un OGame chiamato XNova io ho trovato la condizione:

    WHERE onlinetime>" . (time()-900), 'users', true);

    infatti dopo tot di tempo username risulta disconnesso
    noto che frutta i cookie e la funzione time non si può fare lo stesso senza fare casini nel db, visto che si parla circa di 40 controlli da inserire nel db??


  • User Attivo

    Non è che ci siano grosse differenze visto che anche nello script da te proposto (e che comunque fa tutt'altra cosa) viene memorizzata sul db l'ora della connessione.
    Infatti la query da te riportata controlla il campo onlinetime della tabella user per verificare quanti utenti sono connessi e non il cookie.

    Alessandro


  • Bannato User Attivo

    Come posso estrarre la variabile del utente connesso dai cookie?


  • User Attivo

    I dati presenti nel cookie li ritrovi dentro l'array:
    [php]
    $_COOKIE
    [/php]