Query per cancellazione utente da online postato il 04/07/2011 15:05:31 nel forum programmazione, gdrcd, open source, hosting
Sto usando il codice di Traimo ([url=https://www.gdr-online.com/opensource_gpl.asp]questo[/url]).
Al momento del login, quando viene aperta una sessione php, viene creata una tupla nella tabella ONLINE.
Tale tabella tiene traccia di chi è online, da quanto tempo e in quale "luogo del gioco" (ossia pagina) si trova.
Questo permette di poter mostrare a tutti gli utenti chi è online e dov'è per permettere di raggiungere le persone nel luogo in cui ruolano.
Tale tupla viene cancellata quando l'utente effettua il logout, ma nel caso in cui esca dal gioco senza fare logout, rimane inserito nella tabella sebbene si chiuda la sessione.
Mi servirebbe sapere quando e dove devo mettere la query che rimuove la tupla se voglio che venga rimossa quando viene chiusa la pagina principale del gioco. (da quello che sono riuscita a trovare servirebbe Javascript perchè la chiusura della pagina avviene lato client, ma non ho scoperto nulla di più preciso..).
Se l'utente non ha effettuato un logout regolare e resta nella tabella ONLINE, al suo successivo tentativo di login riceve un messaggio di errore e non gli è possibile loggarsi. Rimane quindi online agli occhi degli altri player che potrebbero cercare di contattarlo inutilmente.
Pagine → 1
04/07/2011 18:22:07
Questa è probabilmente la questione che da più grattacapi quando si crea un sistema per il tracciamento degli utenti online XD
Credo che il sistema più comunemente accettato per risolvere questo problema sia quello di stabilire un tempo di timeout, cioè se l'utente non fa nessun'azione sul sito per più di....metti 10 minuti...allora il sito lo considera offline.
Come implementare questo sistema sul gioco? Personalmente io faccio in modo che per ogni pagina visitata da qualsiasi utente venga sempre richiamata la query che fa la pulizia della tabella dei presenti.
"DELETE FROM Presenti WHERE DATE_ADD(UltimoRefresh, INTERVAL 10 MINUTE)<NOW()"
(ho inventato i nomi della tabella e del campo)
Oppure potresti aggiungere la condizione dei 10 minuti solo allo script di login. Dipende se vuoi riuscire a fare un tracciamento preciso per la lista dei presenti (metodo sopra) o solamente per poter fare login (questo metodo)
In questo modo sei abbastanza sicuro che se per caso l'utente non ha fatto logout, al suo successivo rientro non si ritrovi chiuso fuori dalla porta.
Per rendere più preciso il tracciamento ci vuole javascript: con delle chiamate AJAX fai in modo che il client contatti il server ogni x secondi, così puoi abbassare anche il tempo di timeout per le query. Quando l'ho implementato io ho fatto in modo che però i "ping" al server avvengano solo se l'utente sta effettivamente muovendo il mouse o digitando qualcosa, così evitiamo troppe richieste al server se l'utente non sta facendo niente.
05/07/2011 13:37:43
Ti ringrazio. Inizio col provare usando il timeout che mi sembra un bel po' più semplice.
Quello che mi chiedevo è se non ho capito male come funziona.
La query viene lanciata quando qualcuno richiede la pagina se non erro..e quindi lo script all'interno della stessa viene eseguito sul server.
Nel caso in cui sia online 1 sola persona, questa chiuda il browser e vuole riloggarsi senza che nel frattempo si sia loggato qualcuno, funziona ugualmente? Ossia riesce questa persona ad effettuare il login?
05/07/2011 16:23:31
Brava XD hai trovato l'unico problema di questo sistema.
No quell'ultima persona non ci riesce. Rimane fuori per 10 minuti.
Per superare questo problema io in genere modifico la pagina in cui c'è il modulo per fare login:
proprio all'inizio della pagina metto un controllo, se è impostata una sessione ed è valida, allora non visualizzare la pagina di login ma salta direttamente dentro al GDR saltando il login, perchè di fatto l'ha già fatto.
Una cosa di questo tipo
Discussione seguita da
Pagine → 1
Rispondi alla Discussione Segui Discussione Inoltra Discussione Forum Programmazione, GDRCD, Open Source, Hosting Elenco Forum
I dati del generatore di rank sono stati aggiornati!
New Orleans: [On Game] Turno di Notte
AlterEgo → Scopri AlterEgo GdR: un incredibile universo narrativo in stile medievale fantasy che cresce, muta e vive giorno dopo giorno grazie ai suoi giocatori!
Shadow Scape: ✨ Modifica alla razza: Human characters
The Coven: Boys Boys Boys we're looking for a good time
turnodiiniziativa ha aperto una nuova discussione: Meglio Discord o Forum per iniziare?
RAID Shadow Legends: ⚔️Evento "Il Cammino del Maestro di Spada"
Crossout → Tuffati nel mondo di Crossout, il gioco MMO d'azione post apocalittico! Costruisci le tue speciali macchine da combattimento!
Exclusive Villa GdR ricerca Giocatore
Portus: Harry Potter Gioco di Ruolo: 🏥 Aggiornamenti dall'infermeria 🏥
The Mankind: Chiusura registrazioni
World of Tanks → Lanciati in epiche battaglie spalla a spalla con altri giocatori. Conquista la supremazia nel mondo dei Carri Armati!
Hero Wars: 👀 Ehi, vedete quel lampo all'orizzonte?
Extremelot: AdventureLot Stagione XI - Il Dungeon di Vetrovana
World of Warship → MMO gratuito con frenetiche battaglie navali ambientate nel ventesimo secolo. Salpa con la tua nave ed affronta i nemici!
Giochi Moderni - Lista completa dei giochi di ruolo online ambientati nei giorni nostri
Crea il tuo GDR - Scopri come creare da zero un gdr in PHP! Partiamo dalla registrazione..
Les Ombres de Bruges - Intervista ai gestori del gioco di ruolo play by chat horror Les Ombres de Bruges!
Statistiche Tecniche 2009 - Gdr-online.com pubblica i dati tecnici dei suoi visitatori! Scopri le risoluzioni e i browser maggiormente utilizzati!
Fantasy Day - Resoconto del Fantasy Day al museo del Videogame Vigamus dedicato ad eXtremelot!
The Gate Mud - Presentazione dello storico multi user dungeon The Gate! Entra nel mondo di Ikhari!
Recensione H.D.L. - Dettagliata recensione del gdr moderno - apocalittico Hell Dawn London a cura di Kheper
