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

Hvad er nogle metoder til at forhindre dobbeltpostering i en formular? (PHP)

Hvis du vil forhindre dobbeltindsendelser, skal du gemme tilstanden "er indsendt" versus "er ikke indsendt". Du har flere muligheder for, hvor du kan opbevare disse oplysninger.

  • Database - Tilføj et skjult felt med en autogenereret værdi, der er unik (du kan generere en kort tilfældig streng og tilføje den aktuelle tid). Denne værdi kan også bruges til at identificere samtalen -- hvis du har brug for en tilstandsfuld websamtale. Tilføj denne værdi til databasen og gør den unik. Ulemper:redundant lagring i databasen, reduceret ydeevne på kommentarindsættelse, skal generere en unik streng.
  • Session - Tilføj det samme skjulte felt med en værdi genereret i en lignende sag. Når brugeren indsender formularen, skal du gemme værdien i sessionen, hvis den ikke allerede er der. Hvis det er det, er det en dobbelt indsendelse. Ulemper:du skal stadig generere det unikke token.
  • Browser - (1) Tilføj noget javascript for at deaktivere indsend-knappen, når der er klikket på den. (2) har et skjult felt, der starter med værdien 0 og ændres til 1, når brugeren klikker på send-knappen. Hvis brugeren klikker på knappen igen, tjekker du om værdien er 1 og afbryder hvis den er. Fordele:ingen unik streng. Ulemper:kræver, at javascript er aktiveret; du kan kræve strengen alligevel for at implementere stateful websamtaler.


  1. Access dataverse connector er nu tilgængelig for test

  2. Sådan ved du, hvor mange mysql-linjer der er opdateret

  3. mysqldbcompare adgang nægtet, men mysql-kommandoen virker

  4. Brug af JShell i Java 9 i NetBeans 9.0, del 2