Bugs nel sistema di messaggistica del gdrcd 5.1
Bugs nel sistema di messaggistica del gdrcd 5.1 postato il 02/08/2012 11:13:52 nel forum programmazione, open source e hosting e modificato da clemence il 24/12/2012 23:45:08
Ciao a tutti!
Ho trovato alcuni bugs nel sistema di messaggistica del gdrcd 5.1. presenti nel file messages_center.inc.php (sia in quello della versione base che in quello della patch di sicurezza).
Visto che alcuni di questi problemi li ho risolti mentre altri no, e visto che non c'è una discussione dedicata esclusivamente ai problemi legati la messaggistica del gdrcd 5.1 advanced, ho pensato bene di aprire questa discussione, in modo da fornire e trovare soluzioni.
Per essere sintetici, sono questi i problemi che ho trovato:
1. Interruzione della segnalazione del nuovo messaggio appena si clicca sul link dei messaggi
(Risolto: basta inserire sostituire la riga 7 del file messaggi.inc.php con questa riga:
)
2. Rallentamento del sito alla prima ricezione di un messaggio
(Risolto: In effetti non è un vero problema... Penso che il rallentamento capita solo al primo messaggio perché si doveva caricare il file audio. Ho risolto inserendo un file .swf come suono per i messaggi.)
3. Messaggi inviati a tutta l'utenza segnalati perennemente come non letti anche se vengono letti
4. Possibilità da parte di tutti (anche dei personaggi semplici) di inviare messaggi a tutta l'utenza
L'ultimo problema, in particolare, lo vedo potenzialmente pericoloso. Non mi sento di andare nello specifico per non creare danni alle land che non si sono accorte di questo problema ed hanno gdrcd advanced come base, ma ho notato che qualsiasi personaggio ha la possibilità di inviare messaggi a tutta la land scrivendo una determinata cosa nel campo del mittente.
Infine, c'è una cosa su cui ho bisogno di un chiarimento da parte di qualcuno perché non l'ho capita bene: ma nel gdrcd 5.1 c'è la possibilità di inviare messaggi ai gildati? e se c'è, come funziona?
Ho provato a mettere "super" a capo di una gilda e "test" come suo subordinato, ma non appare niente di nuovo nel menu a tendina sotto il campo del destinatario.
Pagine → 1
02/08/2012 11:38:05 e modificato da clemence il 24/12/2012 23:45:27
baboomba ha scritto: Ciao a tutti!
Ho trovato alcuni bugs nel sistema di messaggistica del gdrcd 5.1. presenti nel file messages_center.inc.php (sia in quello della versione base che in quello della patch di sicurezza).
Visto che alcuni di questi problemi li ho risolti mentre altri no, e visto che non c'è una discussione dedicata esclusivamente ai problemi legati la messaggistica del gdrcd 5.1 advanced, ho pensato bene di aprire questa discussione, in modo da fornire e trovare soluzioni.
Per essere sintetici, sono questi i problemi che ho trovato:
1. Interruzione della segnalazione del nuovo messaggio appena si clicca sul link dei messaggi
(Risolto: basta inserire sostituire la riga 7 del file messaggi.inc.php con questa riga:
)
2. Rallentamento del sito alla prima ricezione di un messaggio
(Risolto: In effetti non è un vero problema... Penso che il rallentamento capita solo al primo messaggio perché si doveva caricare il file audio. Ho risolto inserendo un file .swf come suono per i messaggi.)
3. Messaggi inviati a tutta l'utenza segnalati perennemente come non letti anche se vengono letti
4. Possibilità da parte di tutti (anche dei personaggi semplici) di inviare messaggi a tutta l'utenza
L'ultimo problema, in particolare, lo vedo potenzialmente pericoloso. Non mi sento di andare nello specifico per non creare danni alle land che non si sono accorte di questo problema ed hanno gdrcd advanced come base, ma ho notato che qualsiasi personaggio ha la possibilità di inviare messaggi a tutta la land scrivendo una determinata cosa nel campo del mittente.
Infine, c'è una cosa su cui ho bisogno di un chiarimento da parte di qualcuno perché non l'ho capita bene: ma nel gdrcd 5.1 c'è la possibilità di inviare messaggi ai gildati? e se c'è, come funziona?
Ho provato a mettere "super" a capo di una gilda e "test" come suo subordinato, ma non appare niente di nuovo nel menu a tendina sotto il campo del destinatario.
Grazie per le segnalazioni! :) ti rispondo con ordine!
La premessa è che sulla mia versione di gdrcd ci lavoro da secoli, partendo addirittura dalla 5.0, in molti punti.... quindi ci sta che di molti problemi io non mi sia mai neppure accorta o che ci abbia "lavorato" convinta fossero solo miei xD
1) devo dire che di questo problema non mi ero mai accorta! Provo a mettere quanto tu dici e... vedo un po'! :D
2) idem come sopra!
3) avevo questo problema ma l'ho risolto!
4) ...questa cosa non la sapevo o.o mi manderesti PM con i particolari e, dopo un paio di prove, nel caso, posto la "soluzione" con cui ho risolto io?
Comunque, tanto per spiegarti, gdrcd5.1 era stato fatto per mandare UN messaggio singolo a tutta l'utenza. Poi, chi aveva dal permesso moedratore in su ha il potere di cancellarlo. Loa logica era non intasare il DB di messaggi, ma il problema si risolve, se lo staff segue un minimo la land. Peccato però che il problema che il mesasggio veniva dato perennemente come non letto doveva essere patchato... e mai è stato fatto xD la soluzione, comunque, in sè è abbastanza banale: modificare quel sistema e metterne un altro molto più terra-terra, che prevede l'invio di un messaggio a tutti gli iscritti.
Riguardo la tua ultima domanda, l'ho chiesto anche io e fatto delle prove anche io: la soluzione a cui sono giunta è che quei pezzi di codice in cui si fa riferimento alla gilda sono dei refusi. Ovvero mr_faber, secondo me, aveva pensato ad un sistema di messaggistica "alla gilda", poi mai sviluppato-.
02/08/2012 12:19:19
irenes ha scritto: Comunque, tanto per spiegarti, gdrcd5.1 era stato fatto per mandare UN messaggio singolo a tutta l'utenza. Poi, chi aveva dal permesso moedratore in su ha il potere di cancellarlo. Loa logica era non intasare il DB di messaggi, ma il problema si risolve, se lo staff segue un minimo la land. Peccato però che il problema che il mesasggio veniva dato perennemente come non letto doveva essere patchato... e mai è stato fatto xD la soluzione, comunque, in sè è abbastanza banale: modificare quel sistema e metterne un altro molto più terra-terra, che prevede l'invio di un messaggio a tutti gli iscritti.
Riguardo la tua ultima domanda, l'ho chiesto anche io e fatto delle prove anche io: la soluzione a cui sono giunta è che quei pezzi di codice in cui si fa riferimento alla gilda sono dei refusi. Ovvero mr_faber, secondo me, aveva pensato ad un sistema di messaggistica "alla gilda", poi mai sviluppato-.
Grazie per la spiegazione! :D
Quasi quasi, taglio la testa al toro e tolgo la possibilità di poter mandare messaggi a tutti. Per come la vedo io, staff ed il gestore possono usare il forum per dare una comunicazione importante all'intera utenza, un messaggio incancellabile non mi piacerebbe riceverlo.
Grazie anche per il chiarimento sull'assenza dei messaggi alla gilda... stavo cominciando a pensare che quest'opzione ci fosse ma che ero io a non saperla usare! ^_^"
24/12/2012 02:24:18 e modificato da clemence il 24/12/2012 23:46:40
Salve!
A distanza di mesi riesumo questa discussione perché ho trovato altri due bugs che non sono riuscito a risolvere (anzi, non ho neanche compreso da cosa derivano).
I bungs in questioni sono i seguenti:
1. Comparsa di un messaggio di errore quando un personaggio dotato di carica (master, moderatore, admin...) invia un messaggio multiplo a personaggi inesistenti o che hanno un nome errato.
Il messaggio di errore che appare è questo:
GDRCD MySQL Error [File: messages_center.inc.php; Line: 35]
ErrorCode: 1064
ErrorString: You have an error in your SQL syntax; check the manual
that corresponds to your MySQL server version for the right syntax to
use near '' at line 1
Dettaglio dell'errore: INSERT INTO messaggi (mittente, destinatario,
spedito, testo) VALUE
2. Possibilità da parte dei personaggi semplici (quelli che non hanno alcuna carica) di inviare messaggi multipli a chiunque, anche a personaggi inesistenti o che hanno un nome errato.
E questi messaggi vengono salvati sia nella tabella "messaggi" che nella tabella "bakmessaggi".
Insomma, l'invio dei messaggi multipli è un po' problematico, e forse servirebbe qualche controllo sull'esistenza dei personaggi... ma non ci ho capito granché purtroppo.
24/12/2012 15:08:03
La cosa è semplicissima: riga 29-30 del file messages_center.inc.php
Il controllo di esistenza è già fatto, il problema si evidenzia quando TUTTI i destinatari del messaggio non esistono. Questo genera la query che hai riportato, cioè una query di inserimento senza i dati da inserire.
Come risolvere? All'interno del foreach, invece di concatenare direttamente nella variabile $query usare un'altra variabile nuova. Al di fuori del foreach, deve venire fatto un controllo che la nuova variabile non sia vuota. Se non lo è, allora si procede a concatenare la nuova variabile con la variabile $query e si chiama gdrcd_query, altrimenti non si fa niente.
Per il problema dei permessi: purtroppo GDRCD è progettato così da capo a piedi. Controlla i permessi solo il fase di visualizzazione del form e non dopo che il form è stato inviato, aprendo il software a tutti i tipi di attacchi access bypass. Per ogni funzionalità di invio messaggi dalla riga 12 alla 48, dentro a ogni if ed elseif, devi fare un controllo appropriato dei permessi.
26/12/2012 22:08:00
Grazie Leoblacksoul, proverò la soluzione che hai suggerito, anche perché davvero non vedo altre vie e la pagina non riesco a capirla nella sua completezza.
Ma se ho capito bene, un pg semplice non ha alcun controllo, può inviare ciò che vuole a chi vuole. Ho notato che è per un pg semplice è possibile inviare messaggi anche a personaggi inesistenti, volendo.
26/12/2012 23:17:12
si è esatto. L'autore originale di quella pagina è stato pigro e non ha fatto tutti i controlli dovuti.
Comunque la cosa più importante è inserire il controllo permessi dentro a ogni if
Discussione seguita da
Pagine → 1
Rispondi alla Discussione Segui Discussione Inoltra Discussione Forum Programmazione, Open Source e Hosting Elenco Forum
Articoli, Interviste e altre Risorse!
Seconda Era ↗
Cafuné ↗
World of Warship ↗
Raja Dunia ↗
AlterEgo ↗
CRSED: F.O.A.D. ↗
World of the Sea Battle ↗