sql >> Databasteknik >  >> RDS >> Mysql

Vad finns det för metoder för att förhindra dubbelinlägg i ett formulär? (PHP)

Om du vill förhindra dubbla inlämningar måste du lagra tillståndet "är inskickad" kontra "inte skickad". Du har flera alternativ för var du ska spara denna information.

  • Databas - Lägg till ett dolt fält med ett autogenererat värde som är unikt (du kan generera en kort slumpmässig sträng och lägga till aktuell tid). Detta värde kan också användas för att identifiera konversationen - om du behöver en tillståndsfull webbkonversation. Lägg till detta värde till databasen och gör den unik. Nackdelar:redundant lagring i databasen, minskad prestanda vid infogning av kommentarer, måste generera en unik sträng.
  • Session - Lägg till samma dolda fält med ett värde genererat i en liknande fråga. När användaren skickar formuläret, spara värdet i sessionen om det inte redan finns där. Om det är det är det en dubbel inlämning. Nackdelar:du behöver fortfarande skapa den unika token.
  • Webbläsare - (1) Lägg till lite javascript för att inaktivera skicka-knappen när du har klickat på den. (2) har ett dolt fält som börjar med värdet 0 och ändras till 1 när användaren klickar på knappen Skicka. Om användaren klickar på knappen igen kontrollerar du om värdet är 1 och avbryter om det är det. Fördelar:ingen unik sträng. Nackdelar:kräver att javascript är aktiverat; du kanske kräver strängen ändå för att implementera tillståndsfulla webbkonversationer.


  1. Hur tar man bort flera rader från mysql-databasen med kryssrutan med PHP?

  2. SQL Unik begränsning över flera tabeller

  3. Hur gör man en andra PDO mysql-fråga på en stund från en annan fråga?

  4. Automatisk indexhantering i Azure SQL Database