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
I dati del generatore di rank sono stati aggiornati!
Il gestore di Ex Gratia GDR ha risposto alla recensione di ronniesorge
Metin2 → Sfida i tuoi rivali a battersi con te e dimostra la tua superiorità in questo mondo fantasy!
Legacy of Magic: Il castello di Gorthaur
Lineage II: Estrazione a sorte con amore
World of Warship: Collezione Momento di gloria
Hikaru No Tohei - Le Luci di Tohei: Major outage - disservizi parte 2 🔧
Crossout → Tuffati nel mondo di Crossout, il gioco MMO d'azione post apocalittico! Costruisci le tue speciali macchine da combattimento!
Lost Hope: Stato dei Lavori (Alpha Test)
Le Cronache di Raja Dunia: Custodi del Velo - Aggiornamento
Star Trek Horizon: Novità: abiti personalizzati in scheda PG
Mud AI: Brexinton: Miglioramenti Strategici e Ottimizzazioni
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.
NosTale: Preparatevi per San Valentino!
Entropia Universe: Vincitori di Free-For-All 2024
Legacy of Magic: La distruzione dell’avamposto nemico
Age of Crystals: Evento orroromantico e qualche numero ❤
Sponsorizzati con noi! → Sponsorizza il tuo gioco su GDR-online! Trova nuovi giocatori fra i migliaia di appassionati che ogni giorno visitano il portale!
Vampire GdR - Intervista al gestore di Vampire Gdr il play by forum ambientato nel World of Darkness
I nostri banner - Preleva i banner del nostro portale e facci conoscere!
Oltre il Velo - Intervista alla gestrice del GdR fantasy moderno Oltre il Velo!
Ecchihabara - Intervista alla gestione di Ecchihabara il play by chat hentai
NotebookLM - NotebookLM: la tua AI per la scrittura, la ricerca e i giochi online finalmente in Italia!
Western Redemption - Intervista al gestore del play by forum Western Redemption Gdr