[RISOLTO - GDR CD 5.4] Presenza non visibile al primo accesso postato il 31/03/2018 13:23:12 nel forum programmazione, gdrcd e open source e modificato da damnedqueen89 il 01/04/2018 14:20:29
Buongiorno!
Mi ritrovo a scrivere da queste parti perchè ho riscontrato un problema abbastanza fastidioso nel suo insieme e magari qualcuno potrebbe illuminarmi su come risolverlo!
Espongo il problema:
Una volta che un utente si iscrive e compie il primo accesso nella land, la sua presenza non è rilevata nell'elenco dei presenti e dei presenti estesi. L'utente può fare tutto, consultare le bacheche, mandare messaggi privati, spiare le chat eccetera eccetera, ma non si vede perchè è come se fosse un fantasmino o la particella di sodio dell'acqua.
Questo problema ho visto che si risolve facendo il logout e successivamente il login, ma avrei piacere di capire a cosa sia dovuto, qualcuno potrebbe darmi una mano?
Pagine → 1
31/03/2018 14:43:05
Ciao, usi la versione 5.4.1 pulita o hai fatto delle modifiche alle parti che gestiscono presenti, login e logout?
31/03/2018 16:16:33
Ciao! Ho iniziato con la versione pulita per poi farci le modifiche sopra, ma effettivamente potrei aver toccato io stessa qualcosa senza rendermene conto.
Faccio un controllo incrociato con una versione gdr-cd pulita per vedere se ci sono incongruenze e in caso riscrivo qui!
31/03/2018 17:42:28
controlla a che valore hai impostato i valori di default dei campi ora_entrata, ora_uscita e ultimo_refresh nella tabella personaggio sul database.
se sono impostati a current_timestamp potresti incorrere in problemi simili a quelli che descrivi
31/03/2018 21:58:24 e modificato da damnedqueen89 il 31/03/2018 21:59:39
01/04/2018 11:27:51 e modificato da lkmnoppo il 01/04/2018 11:59:20
Un'altra domanda, hai fatto modifiche anche alla pagina di iscrizione? Perché come ha suggerito leoblacksoul potrebbe essere un problema di come vengono settati i valori di "ultima entrata" e "ultima uscita" alla registrazione sul db del personaggio.
Infatti il comportamento che descrivi supporta questa ipotesi perché un logout seguito da un login (che sono praticamente uguali all'originale) riportano il db in uno stato consistente rendendo il tutto correttamente funzionante. Il logout sistema "ultima uscita" e poi da quel momento in poi la pagina presenti ha un'"ultima uscita" valida da confrontare.
Per verificare questa ipotesi, prova a registrare un pg, e poi vedi quali sono i valori che sono stati inseriti nel db nei campi "ultima uscita" e "ultima entrata"
Edit: ho appena controllato sulla documentazione di MySQL (do per scontato che usi questo perché di solito è così, qualora non fosse vero correggimi) e per come è il db di default, il valore che dovresti trovare in un pg appena registrato è 0000-00-00 in entrambe le colonne.
01/04/2018 11:28:52 e modificato da geko il 01/04/2018 11:30:08
Ciao,
il +300 sul timestamp de "ultimo_refresh" significa che aggiunge 5 minuti e in inserito in quel modo nel IF vuol dire che controlla che dall'ultimo refresh siano passati 5 minuti prima di poter rientrare se non hai effettuato il logout, controllo superabile facilmente dove se erroneamente cambio sito e clicco il tasto indietro (del browser) non rieffettuo il login ma rientro perchè le sessioni e il cookie della mia sessione esiste ancora.
Nella pagina presenti.inc.php stai attenta perchè è lì che aggiorna le sessioni degli spostamenti del pg e "ultimo_refresh".
Mentre la tabella a db del personaggio non può avere il current_timestamp di default, in primis, perchè se guardi nell'ultima fase della registrazione i campi ora_entrata e ora_uscita sono a NULL e il current_timestamp NON supporta il valore NULL di default.
Quindi per poter mettere il current_timestamp devi PRIMA modificare l'inserimento del personaggio a DB quando viene registrato, inoltre current_timestamp è supportato solo dai campi TIMESTAMP e non dai DATE o DATETIME.
01/04/2018 14:17:16 e modificato da damnedqueen89 il 01/04/2018 14:22:06
Sono andata direttamente nel db dove ho cambiato i valori di default a ultimo_refresh, ora_entrata, ora_uscita. Dato che avevo NULL in tutti e tre i campi ho inserito invece 0000-00-00 00:00:00 dato che provando a registrare continuava a dare lo stesso errore e adesso invece il fantasmino non è più fantasma ma anzi viene segnato perfettamente nella lista dei presenti, quindi il problema è risolto!
Vi ringrazio tantissimo del vostro aiuto <3
01/04/2018 16:09:02
10/12/2019 17:46:29
scusate se riesumo questa discussione, ma ho lo stesso problema e ho provato a settare i valori predefiniti di quelle colonne su 0000-00-00 00:00:00 (ma se è per questo anche su 1000-01-01 00:00:00 visto che le istruzioni di MySQL me lo davano come valore limite - giustamente, visto che 0000-00-00 non è una vera data) ma ogni volta mi spunta fuori l'errore #1265, data truncated for column "ultimo_refresh" at row 7 (lo stesso vale anche per le altre due colonne) e non capisco proprio da cosa dipenda... qualcuno mi sa dare una mano?
Discussione seguita da
Pagine → 1
Rispondi alla Discussione Aggiungi ai Preferiti Inoltra Discussione Forum Programmazione, GDRCD e Open Source Elenco Forum
Il gestore di Star Wars Forum ha risposto alla recensione di cnozzo