[Città virtuale GPL]Utenti appesi: mobbasta! postato il 16/11/2008 16:35:37 nel forum programmazione, gdrcd, open source, hosting e modificato da armonica il 16/11/2008 16:39:47
Premessa: pur avendo messo in piedi Manaus, non sono un programmatore. Conosco il linguaggio html, mentre di php sono riuscito (con una grossa mano da parte di alcuni di voi, vero Xen?) giusto ad imparare ciò che mi serviva per adattare la land alle mie esigenze.
Chi utilizza il codice di Traimo si è di certo scontrato col problema degli utenti appesi in caso di logout non corretto: accade in pratica che chi esce chiudendo la finestra del browser, anzichè usando il tasto "esci", rimanga permanentemente nella lista degli online.
Un bug da poco, che rende ancora più frustrante il fatto di non riuscire a risolverlo. So che il problema è stato già oggetto di discussione in passato: per non ricorrere ogni volta al comando "do_sblocca", vi è chi ha suggerito di ricorrere ai popups, e chi di inserire una nuova voce nel database per eliminare la questione.
Tuttavia, ad un non-addetto-ai-lavori come me, pare impossibile che la cosa non possa essere risolta semplicemente modificando la pagina "do_login.php" (la posto qui sotto:è praticamente identica a quella dell'OS originale).
Pagine → 1
16/11/2008 17:15:25
non conosco gpl, quindi non sono in grado di fornirti una "stringa risolutrice", ma posso fornirti la teoria necessaria per farti superare questo problema.
Anzitutto devi creare un campo datetime nel db nella tabella dei presenti (non so com'è fatto il db, ma nel mio ho creato una tabella dei presenti).
poi crei una pagina in cui fai l'update di questo campo (lo chiamo refresh):
$Sql = "UPDATE presenti SET refresh = NOW() WHERE nome = '".$_SESSION['sessione relativa a chi fa il login']."'";
mysql_query($Sql);
e nella stessa pagina fai un controllo del genere:
$Sql = "DELETE FROM presenti WHERE DATE_ADD(refresh, INTERVAL 1 MINUTE) < NOW()";
mysql_query($Sql);
Tale pagina la includi in un'altra pagina che si refresha abbastanza spesso (io ad esempio ce l'ho inclusa nella pagina che aggiorna le missive).
In sintesi il codice va a modificare il campo "refresh" (tipo datetime), creato nella tabella dei presenti, inserendovi la data del momento in cui la pagina si aggiorna. Se un personaggio esce premendo la X in alto a destra, tale campo non verrà aggiornato. Così nel momento in cui tale pagina verrà nuovamente aggiornata da qualunque pg connesso, il personaggio suddetto sarà tolto dai presenti.
17/11/2008 14:01:43
Io risolsi appunto con il campo VER_ONLINE che c'è nella tabella ONLINE.
In refresh.php ho aggiunto una query che seleziona questo dato per tutti gli on-line. Poi cicla tutto facendo la sottrazione tra il time attuale e il dato preso da db. Se è minore maggiore di 120 cancella quell'utente dal db altrimenti gli aggiorna il campo VER_ONLINE con il time attuale. Aggiungendo un controllo simile anche al login anche se l'ultima persona ad uscire dovesse rimanere appesa e fosse la prima a rientrare si troverebbe già sbloccato.
17/11/2008 14:50:29
Perchè non creare una bella patch??
17/11/2008 15:24:31
17/11/2008 19:13:12
Discussione seguita da
Pagine → 1
Rispondi alla Discussione Aggiungi ai Preferiti Inoltra Discussione Forum Programmazione, GDRCD, Open Source, Hosting Elenco Forum
Planethos GdR: Una nuova profezia
Metin2: Informazioni sul server migliorate
OGame → In OGame migliaia di giocatori da tutto il mondo competono tra di loro per conquistare l'intero universo!
Age of Crystals: Rallentamenti estivi
dbzgdr ha risposto alla discussione: Dragon Ball Z Gdr
Titan Revenge: Calendario eventi fino a fine mese online!
Planethos GdR → Al gioco del trono o si vince o si muore. Con i Regni divisi, quale sarà la tua strada? Guerra, diplomazia, inganno o commercio? Entra e scoprilo!
Enlisted: Modifiche al sistema di aggiornamento
pyro72 ha aperto un annuncio di ricerca: World Without Heroes ricerca Giocatore
World Without Heroes: News GDR: Pubblicazione e Nuovo Inizio
Titan Revenge → Diventa il grande generale del regno e ottieni il favore degli dei per diventare una valchiria. Unisci le forze per salvaguardare l'umanità!
I dati del generatore di rank sono stati aggiornati!
Il gestore di Nexi Generation ha risposto alla recensione di deanna
Brightest Star: Che (dis)grazia questo campeggio!
Entropia Universe → Lascia che il tuo avatar esplori nuovi mondi e viaggi tra i pianeti in questo stupendo MmoRpg Sci-Fi Free to Play!
eXtramondo - Che cos'è Terre di eXtramondo... il play by chat ambientato nel mondo del Signore degli Anelli!
MadLand - Recensione del GDR Fantasy MadLand
Bring me to Malmö - Intervista alla gestrice di Bring me to Malmö il play by chat ambientato in Svezia!
NSA e MmoRpg - L'Intelligence Americana ha spiato i giocatori di giochi di ruolo online, scopriamo cosa è accaduto!
Universi per Gioco - Scrivere l’ambientazione per un gioco di ruolo non è un compito facile! Scopriamo perchè...
Statistiche Tecniche 2023 - Gdr-online.com pubblica i dati tecnici dei suoi visitatori per l'anno 2023!