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.