Ciao a tutti,
sto cercando di creare un sistema che possa tenere traccia se un utente effettua il login tutti i giorni. Una sorta di "daily login bonus".
In pratica all'interno di una tabella giocatori, ho salvato (per ogni utente) un campo "datetime" che salva al suo interno la data e l'ora dell'ultimo accesso verificato dell'utente.
In pratica quando l'utente effettua l'accesso ho pensato di fare questo:
  • Viene salvata la data e l'ora attuale
  • Viene salvata l'ora di reset (cioè l'ora in cui il giorno "finisce" e la data di accesso del giocatore è valida per essere verificata come nuovo accesso giornaliero)
  • Viene recuperato dal db l'ultima data/ora di accesso dell'utente registrata
  • Effettuo i controlli per vedere se l'utente rientra nel bonus di accesso giornaliero
  • Se necessario aggiorno il campo dell'accesso giornaliero nel db
  • Stampo su echo il risultato


Adesso vi posto il codice che ho provato a scrivere, anticipandovi però che sto riscontrando errori di confronto tra le date visto che alcune risultano stringhe e altre no:

codice:
$now = date('Y-m-d H:i:s');    $resetTimeObject = new DateTime();
date_time_set($resetTimeObject, 12, 00, 00);
$resetTime = $resetTimeObject->format('Y-m-d H:i:s');
$lastLogin = $mysqli->query('SELECT ultimoaccesso FROM giocatori WHERE idgiocatore = "'.$_GET["idgiocatore"].'"');
$lastDay = date('Y-m-d H:i:s',strtotime($resetTime ."-1 days"));

if ($lastLogin < $lastDay && $now < $resetTime) {
       $bonus = array('bonus'=> 'true', 'prossimo' => date('Y-m-d', strtotime($resetTime .'+1 days'. - $now)));
        echo json_encode($bonus);
    }
    // Altrimenti se il tempo di reset è passato
    else if ($resetTime < $now) {
        // Se il tempo di reset è passato e l'utente effettua il login perdendo il giorno passato non riceve il bonus della streak
        if ($resetTime > $lastLogin) {
            $loginStreak = $mysqli->query('SELECT idgiocatore FROM giocatori WHERE idgiocatore = "'.$_GET["idgiocatore"].'"');
            echo $loginStreak;
            $bonus = array('bonus'=> 'false', 'loginStreak' => $loginStreak, 'prossimo' => date('Y-m-d', strtotime($resetTime .'+1 days')));
            echo json_encode($bonus);
        } else {
            //Altrimenti  il giocatore è il login streak e riceve il bonus
            $loginStreak = $mysqli->query('SELECT idgiocatore FROM giocatori WHERE idgiocatore = "'.$_GET["idgiocatore"].'"');
            echo $loginStreak;
            $bonus = array('bonus'=> 'true', 'loginStreak' => $loginStreak, 'prossimo' => date('Y-m-d', strtotime($resetTime .'+1 days')));
            echo json_encode($bonus);
        }
    }
Sapete aiutarmi a correggere il mio errore? Inoltre se notate che il mio sistema è troppo "macchinoso" e è possibile ottenere lo stesso risultato più facilmente, fatemi sapere!