Come gestire più presentazioni lato server

Tutti conosciamo il buon vecchio trucco “disabilita il pulsante di invio”, ma quali sono i modi migliori per gestire il lato server di più invii? Ho un’applicazione in cui è assolutamente fondamentale che un modulo venga inviato una sola volta: elabora una carta di credito. Non ho scritto come è adesso ma come una soluzione rapida ho lanciato la tecnica disable-on-submit, tuttavia alcuni utenti impazienti che hanno disabilitato javascript vengono comunque accusati due volte.

Quindi, quali sono i modi per evitarlo? Posso pensarne alcuni – ne ho usati alcuni in passato – ma mi piacerebbe vedere se ci sono delle “migliori pratiche” su come affrontare questo. Sto usando PHP ma sono più interessato ai concetti.

edit: Sono a conoscenza della tecnica del token ed è quello che ho usato in passato, questa domanda è più o meno per vedere se il mio approccio è in linea con quello che il resto di voi programmatori usa bene.