Allora, se anch' io comincio a capisciare bene, la strada più efficiente rimane quella di far eseguire lato client (JavaScript) i controlli di validazione sugli input e sulle select.
Questo può avvenire all' ONCHANGE (per le SELECT) e all' ONKEYUP (per le textbox), cioè all' istante di selezione/compilazione una per una: se c'è un' incongruenza, il messaggio intimidatorioappare subito; oppure all' ONSUBMIT del FORM per tutti i campi e se c'è un' incongruenza l' invio non parte e compare l' avviso.
Rimane il fatto che JavaScript è un settore che può trovarsi disabilitato su un alcuni browser, cioè alcuni utenti intenzionalmente navigano con JS disabilitato (o qualcuno glielo ha disabilitato sul navigatore e nell' ignoranza, così vanno avanti).
In tal caso si ricade nella situazione di partenza per cui, devesi comunque mantenere una strategia lato server seppur meno agile.
Si può anche obbligare all' invio solo tramite JS: in tal caso il bottone diverrà un TYPE="Button" in luogo di un TYPE="Submit". A chi tiene JS disabilitato non gli parte niente.