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 Aggiungi ai Preferiti Inoltra Discussione Forum Programmazione, GDRCD, Open Source, Hosting Elenco Forum
venus dormiens ha aperto un annuncio di ricerca: Origo Haeredis - Harry Potter Gdr ricerca Giocatore
Metin2: Server Boost Yohara – Dettagli e FAQ
Pandora Upside Down High School → La prima scuola per sovrannaturali al mondo vi attende! Scoprite il vostro cammino Ancestrale relazionandovi con i compagni e le attività dei club
Sea of Conquest: Ci dai una mano ai #PocketGamer Awards 2024?
goldaries ha recensito Games of Thrones Winter is Coming
spike92 ha recensito Il Grande Blu
World of Warship: Aggiornamento 13.11: anteprima
Ikariam → Su una piccola isola, in qualche parte del Mediterraneo, sorge un`antica civiltà. Sotto la tua guida inizia un`era di ricchezza e di scoperte!
gdr-online.com ha risposto alla discussione: Parere su BrowserGame
W40K Dathyar: Specializzazioni
NosTale: Ora nel NosMall: dolcissimi mini-pet
DarkOrbit: Aggiorna la scatola dell'Apocalisse!
World of Tanks → Lanciati in epiche battaglie spalla a spalla con altri giocatori. Conquista la supremazia nel mondo dei Carri Armati!
I dati del generatore di rank sono stati aggiornati!
aik ha aperto una nuova discussione: Parere su BrowserGame
eXtremelot: La Bussola dei Cartografi di Lot
Dallas Black Gold: [Trama] JFK Memorial
Storie di Agarthi → Un Varco si apre davanti a te, un mondo tra i mondi è a portata di mano. Lasciati alle spalle le certezze, diventa quello che hai sempre cercato.
Gdr su Google Wave? - Clemence analizza la nuova piattaforma di Google. Sarà adatta a giocare di ruolo?
Yume - Intervista alla gestione del GdR fantasy play by chat Yume
Rpg 2023 - RPG 2023: l’importanza del settore e i titoli che hanno lasciato il segno
Star Trek Equilibrium - Intervista al founder del play by forum Star Trek Equilibrium!
The Coven - Intervista alla gestrice del play by forum urban fantasy The Coven
VPS - Cos'è il VPS e quale il suo utilizzo nel Gaming?