Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jakie są metody zapobiegania podwójnemu księgowaniu w formularzu? (PHP)

Jeśli chcesz zapobiec podwójnemu przesyłaniu, musisz zapisać stan „jest przesłany” i „nie został przesłany”. Masz kilka opcji, gdzie przechowywać te informacje.

  • Baza danych - Dodaj ukryte pole z automatycznie wygenerowaną wartością, która jest unikalna (możesz wygenerować krótki losowy ciąg i dołączyć aktualny czas). Ta wartość może być również używana do identyfikowania konwersacji — jeśli potrzebujesz stanowej konwersacji internetowej. Dodaj tę wartość do bazy danych i uczyń ją unikalną. Wady:nadmiarowe przechowywanie w bazie danych, zmniejszona wydajność przy wstawianiu komentarza, konieczność generowania unikalnego ciągu.
  • Sesja - Dodaj to samo ukryte pole z wartością wygenerowaną w podobnej sprawie. Gdy użytkownik przesyła formularz, zapisz wartość w sesji, jeśli jeszcze jej tam nie ma. Jeśli tak, to jest to podwójna uległość. Wady:nadal musisz wygenerować unikalny token.
  • Przeglądarka - (1) Dodaj javascript, aby wyłączyć przycisk przesyłania po kliknięciu. (2) mają ukryte pole, które zaczyna się od wartości 0 i jest zmieniane na 1, gdy użytkownik kliknie przycisk przesyłania. Jeśli użytkownik ponownie kliknie przycisk, sprawdzasz, czy wartość wynosi 1 i przerywasz, jeśli tak jest. Zalety:brak unikalnego sznurka. Wady:wymaga włączonej obsługi javascript; i tak możesz wymagać ciągu, aby zaimplementować stanowe konwersacje internetowe.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cytaty pojedyncze, cytaty podwójne, cytaty wsteczne Wyjaśnienie użycia MySQL

  2. Kod błędu:1062. Zduplikowany wpis „1” dla klucza „PRIMARY”

  3. Jak wyszukiwać podciągi Soundex() w MySQL?

  4. Jak utworzyć partycję dla każdego miesiąca bieżącego roku?

  5. PHP/MySQL:Modeluj powtarzające się zdarzenia w bazie danych, ale zapytaj o zakresy dat