Controllo su ultima entry in DB postato il 10/01/2017 17:43:38 nel forum programmazione, gdrcd, open source, hosting e modificato da gdr-online.com il 10/01/2017 17:47:00
Buonasera,
scrivo perché vorrei sapere come impostereste un controllo sull'ultima immissione fatta in DB...
Nello specifico, vorrei fare un controllo sull'ultima entry in DB, nella Tabella 'Chat'.
L'idea (che potrebbe tornare utile anche ad altri) è quella di creare un "if" che impedisca allo stesso utente di mandare la stessa frase in chat più di una volta.
Questo per evitare il problema dei multipli invii in chat dovuti a:
- Problemi di linea (che causano il reinseriment della stessa frase 5 volte di seguito XD)
- Problemi di refresh esagerati (chi preme f5 ogni 2 secondi XD)
- Disturbatori (che inviano la stessa frase, magari anche offensiva, in chat, tanto per dare fastidio)
Il controllo quindi dovrebbe verificare se:
La frase inviata in chat dall'utente X è la stessa frase inviata dallo stesso utente nell'ultima azione inviata in chat.
Quindi, a parole:
Pagine → 1
10/01/2017 20:50:51 e modificato da dyrr il 10/01/2017 20:53:56
Per i primi due casi citati più che un controllo sull'ultima azione inviata dal giocatore nel database imposterei il form con un token di controllo.
Qui puoi trovare un esempio dettagliato di cosa intendo: https://css-tricks.com/serious-form-security/ ↗ https://css-tricks.com/serious-form-security/ ma puoi trovarne molti altri cercando fon form token o crsf token.
In pratica il concetto è questo come flusso:
Viene generato un token univoco con php
Viene salvato sia in sessione sia in un campo hidden del form.
Quando il form viene inviato viene fatto un controllo se il token in sessione corrisponde al token inviato dal form, se i due corrispondono vengono effettuate le operazioni sul form, altrimenti no.
Cosa succede se il form viene inviato più volte tipo con un F5:
essendo la pagina strutturata così:
blocco di controllo
generazione del token
Laprima volta che viene inviato il form i due token corrispondono, la seconda volta il token di sessione è diverso da quello del form perchè ne è stato generato uno nuovo.
Per i disturbatori più che un contorllo sulla stessa frase, visto che potrebbero aggirare il controllo, semplicemente cambiando l'ultima lettera della frase o altro, io imposterei un controllo antiflood, ovvero che impedisca l'invio di un messaggio in chat se non è passato almeno un tot di tempo dal precedente messaggio in chat dell'autore.
Visti i tempi medi di una giocata in un play by chat, anche se imposti un controllo che un personaggio non possa inviare due messaggi di fila prima che siano passati un paio di minuti il gioco non ne dovrebbe risentire minimamente.
Fare questo controllo è abbastanza semplice, fai una query TIPO questa
12/01/2017 01:18:41
Hmm, l'idea del Token mi piace molto (molto più elegante dei mei mille "if" XD)
La soluzione del "antiflood" (a parte che mi ricorda i Flood di Halo XD) invece, sarebbe un po' "problematica" in quanto in gioco abbiamo una funzione che ci permette di inviare in chat una correzione alla frase inviata (un semplice comando che permette di inserire una frase in rosso, che rappresenta la correzione dell'errore inviato). Quindi bloccando l'invio per tot min, impedirei anche agli utenti di mandare la correzione. Inoltre in alcuni casi il master potrebbe voler inviare più dadi (per esiti separati dai vari PG) e quindi potrebbe rappresentare un problema. (ovvio, potrei creare eccezioni per il comando "Correzione" e per i "Master" e i "Dadi master", ma un eventuale disturbatore potrebbe usare anche il comando delle correzioni per dare fastidio...
Grazie mille per i consigli. Intanto tenterò di procedere con la strada Token (che risolve cmq il problema inizialmente sollevato, e principale, quello dei refresh maniacali e dei hickup XD)
Vi terrò aggiornati anche per postare l'eventuale codice funzionante per chi ne avesse/avrà bisogno.
Grazie
12/01/2017 01:52:37
puoi bloccare l'invio anche solo per l'invio di determinati tipi di azioni per tot tempo, nel senso a suo tempo quando lo avevo fatto io solo i messaggi normali erano bloccati come intervallo ad 1 minnuto di tempo minimo tra l'uno e l'altro per lo stesos utente. skill, messaggi dei master, tiri di dado invece non lo erano
Discussione seguita da
Pagine → 1
Rispondi alla Discussione Aggiungi ai Preferiti Inoltra Discussione Forum Programmazione, GDRCD, Open Source, Hosting Elenco Forum
wishbone ha recensito Brightest Star
The Darkness of Salem: QUEST: La notte di Salem Capitolo 1
World of Tanks → Lanciati in epiche battaglie spalla a spalla con altri giocatori. Conquista la supremazia nel mondo dei Carri Armati!
ramen ha recensito One Piece World
Il genere Pokémon raggiunge i 300 giochi catalogati!
War Thunder: Gloire: Potenziamenti utili!
sparhawack ha recensito Hikaru No Tohei - Le Luci di Tohei
World of Warship → MMO gratuito con frenetiche battaglie navali ambientate nel ventesimo secolo. Salpa con la tua nave ed affronta i nemici!
sparhawack ha recensito Exclusive Villa GdR
I dati del generatore di rank sono stati aggiornati!
Ex Gratia GDR: Aggiunta la Timeline ufficiale!
Western Redemption Gdr: Nuovo minigioco - Crazy Bullet
New World Order → Diventa un agente del Nuovo Ordine Mondiale e affronta le forze occulte che minacciano il pianeta Terra in questo GDR Urban Fantasy per Mobile!
Le Cronache di Raja Dunia: Inserimento primi Diavoli
RAID Shadow Legends: Infografica Michelangelo!
Il gestore di Storie di Agarthi ha risposto alla recensione di gabbagabbajay
kumohira ha risposto alla discussione: Cambio Licenza GDRCD
Sea of Conquest → Vivi un'avventura tra i mari! Dal cuore del Mare del Diavolo, un paradiso piratesco brulicante di magia, tesori e avventure, salperai verso l'ignoto!
Tesi Steampunk - Tesi sulla narrativa steampunk e i suoi problemi di traduzione
New Black Gold - Intervista al gestore di New Black Gold, il play by chat cyberpunk!
Due Città - Recensione del gioco Due Città...da cui poi si son sviluppati tutti i giochi GDR-CD
Conquistadores - Recensione del GDR Conquistadores. Scopri il nuovo mondo!
Narratività e PbC - Interessante elaborato sulla narratività e potenzialità dei giochi di ruolo online testuali
Fantawestern - Il fantawestern è un sottogenere della fantascienza poco conosciuto ma che ha fornito spunti a film e opere letterarie.. scopriamolo!
VR Gaming - Il ruolo della realtà virtuale nel presente e nel futuro del gaming
RAID Shadow Legends - Plasma i tuoi eroi fino a farli diventare vere e proprie armi viventi e assembla i più epici gruppi d'assalto mai visti finora!