Mysql
 sql >> Database >  >> RDS >> Mysql

Quali sono alcuni metodi per impedire la doppia pubblicazione in un modulo? (PHP)

Se si desidera evitare doppi invii, è necessario memorizzare lo stato di "inviato" rispetto a "non inviato". Hai diverse opzioni su dove conservare queste informazioni.

  • Banca dati - Aggiungi un campo nascosto con un valore univoco generato automaticamente (puoi generare una breve stringa casuale e aggiungere l'ora corrente). Questo valore può essere utilizzato anche per identificare la conversazione, se è necessaria una conversazione Web con stato. Aggiungi questo valore al database e rendilo univoco. Svantaggi:archiviazione ridondante nel database, prestazioni ridotte nell'inserimento dei commenti, necessità di generare una stringa univoca.
  • Sessione - Aggiungi lo stesso campo nascosto con un valore generato in un argomento simile. Quando l'utente invia il modulo, salva il valore nella sessione se non è già presente. Se lo è, è una doppia sottomissione. Svantaggi:devi comunque generare il token univoco.
  • Browser - (1) Aggiungi alcuni javascript per disabilitare il pulsante di invio una volta cliccato. (2) hanno un campo nascosto che inizia con il valore 0 e viene modificato in 1 quando l'utente fa clic sul pulsante di invio. Se l'utente fa nuovamente clic sul pulsante, si controlla se il valore è 1 e si interrompe se lo è. Vantaggi:nessuna stringa univoca. Svantaggi:richiede che javascript sia abilitato; potresti comunque richiedere la stringa per implementare conversazioni web stateful.