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
Shadow Scape: ✨ Land nuovamente aperta!
La Tana del Ladro: ~ Forte Xantharl - La Rocca dei Burroni ~
World of Tanks → Lanciati in epiche battaglie spalla a spalla con altri giocatori. Conquista la supremazia nel mondo dei Carri Armati!
Dalemyr: Pratoverde, festa in tutti i Reami
Entropia Universe: Note sulla versione di Entropia Universe 18.13.0
Gioco più visitato di Aprile 2025: The Last Sparks - Savannah Tales
Enlisted: Rendiamo Enlisted un posto migliore N° 68
Enlisted → Guida la tua squadra di soldati in combattimenti su larga scala, con fanteria, veicoli corazzati e aerei della IIa Guerra Mondiale!
I dati del generatore di rank sono stati aggiornati!
One Piece World: Level Up verso l'unicità
Legacy of Magic: Missione Superstizione IIII
Football Team Soccer: Ultimo numero del nostro magazine!
FragPunk → Gioco d'azione frenetico ispirato al punk, con gameplay caotico, ribelle ed energia illimitata! Gioca gratuitamente!
Enlisted: Saldi di maggio in Enlisted
Raxhodya Yaoi GdR: Nuova Trama: L'incubo Senza Volto
Shadow Scape: ✨ Chiusura momentanea
Dominion Gdr → In una NY con un tessuto sovrannaturale nascosto, il Bronx Vampirico e il Queens dei Lupi ribollono sotto il Dominio dei Bokor. Quanto durerà la pace?
Gaming Disorder - Gaming Disorder: L'organizzazione mondiale della sanità riconosce la dipendenza da videogiochi
One Piece World - Intervista al gestore del gdr play by chat One Piece World!
Narnia - Un viaggio verso la realtà: Le Cronache di Narnia nella ricezione italiana
Lupus in Forum - Intervista al gestore di Lupus in Forum il gioco ispirato al gioco di carte Werewolf!
Extremelot - ExtremeLot: 17 Anni per il primo Gdr Fantasy Italiano!
Allineamenti GoT - Tu di che allineamento sei? Special guest: A Game of Thrones!
Giochi One Piece - Lista completa dei giochi di ruolo online ambientati nel mondo di One Piece
Venezuela e RuneScape - La storia dei Venezuelani che sono sopravvissuti alla crisi economica giocando a Old School RuneScape