sql >> Database >  >> RDS >> Mysql

Wat zijn enkele methoden om dubbel posten in een formulier te voorkomen? (PHP)

Als u dubbele inzendingen wilt voorkomen, moet u de status "is ingediend" versus "is niet ingediend" opslaan. U heeft verschillende opties om deze informatie te bewaren.

  • Database - Voeg een verborgen veld toe met een automatisch gegenereerde waarde die uniek is (u kunt er een korte willekeurige tekenreeks aan toevoegen en de huidige tijd toevoegen). Deze waarde kan ook worden gebruikt om het gesprek te identificeren, als u een stateful webgesprek nodig hebt. Voeg deze waarde toe aan de database en maak deze uniek. Nadelen:redundante opslag in de database, verminderde prestaties bij het invoegen van opmerkingen, moeten een unieke string genereren.
  • Sessie - Voeg hetzelfde verborgen veld toe met een waarde die in een vergelijkbare kwestie is gegenereerd. Wanneer de gebruiker het formulier verzendt, slaat u de waarde op in de sessie als deze er nog niet is. Als dat zo is, is het een dubbele indiening. Nadelen:je moet nog steeds de unieke token genereren.
  • Browser - (1) Voeg wat javascript toe om de verzendknop uit te schakelen zodra erop is geklikt. (2) hebben een verborgen veld dat begint met de waarde 0 en wordt gewijzigd in 1 wanneer de gebruiker op de verzendknop klikt. Als de gebruiker nogmaals op de knop klikt, controleer je of de waarde 1 is en breek je af als dat zo is. Voordelen:geen unieke string. Nadelen:vereist dat javascript is ingeschakeld; je zou de string toch nodig kunnen hebben om stateful webconversaties te implementeren.


  1. Lijst met gegevenstypen in SQL Server 2017

  2. mysql aantal duplicaten

  3. Migreren van AnswerHub naar WordPress:A Tale of 10 Technologies

  4. wat verhindert dat PHP verbinding maakt met mijn MySQL-database?