Qual è il modo migliore per ripopolare un modulo e visualizzare gli errori senza script?

StackOverflow https://stackoverflow.com/questions/1003132

  •  05-07-2019
  •  | 
  •  

Domanda

Sto costruendo un'applicazione che utilizza le chiamate Ajax per la convalida dei moduli e alcuni altri, il problema è che non mi piace quando quegli errori di convalida vengono visualizzati in una nuova pagina senza CSS e il modulo viene completamente ripristinato senza i javascripts.

Sto parlando di una dozzina di moduli, quindi sarà abbastanza fastidioso per l'utente passare attraverso i moduli più e più volte.

Ho letto alcune risposte su questo argomento, ma esiste un modo specifico, una best practice per una situazione come questa (più lungo le linee di convalida del modulo)?

Mi scuso se esiste già una risposta.

Modifica:

Tutte le convalide vengono eseguite sul lato server, attualmente gli errori vengono visualizzati con l'aiuto di Ajax. Quello che mi piacerebbe è un metodo conveniente per ripopolare il modulo e visualizzare errori senza javascript se si verifica un errore durante l'elaborazione del modulo.

È stato utile?

Soluzione

Non sono sicuro se stai insinuando con la tua domanda che non convalidi sul server - questo sarebbe considerato un enorme buco di sicurezza poiché ovviamente i moduli potrebbero essere aggirati semplicemente disabilitando Javascript. Devi convalidare ogni volta sul server, mentre la convalida sul lato client è semplicemente piacevole da eseguire.

Inoltre, il "problema" di avere i moduli reimpostati quando la pagina viene ricaricata diventa discutibile quando si utilizza un framework decente - In Python, Django si ripopola automaticamente in caso di errori. In PHP, anche CakePHP e CodeIgniter lo fanno, e sono sicuro che la maggior parte dei buoni framework lo fanno, poiché rientra nella categoria dei "compiti comuni". che i quadri dovrebbero astrarre.

Ogni volta che non sto usando un framework, scrivo la mia piccola classe Form che soddisfa il bisogno.

MODIFICA :

Non sono a conoscenza di nulla che si possa collegare a ciò che si deve essere in grado di ripopolare il modulo. La tua scommessa migliore è scrivere la tua piccola classe per essa, che non dovrebbe richiedere più di 1 ora.

Altri suggerimenti

Quello che faccio normalmente è memorizzare tutte le stringhe di errore in un array in una variabile di sessione (utilizzo PHP). Se si verifica un errore sul lato server, reindirizzare l'utente alla pagina del modulo, verificare la sessione var e visualizzare gli errori nel modo appropriato. Assicurarsi di aver disattivato la sessione var per liberare memoria dopo averla visualizzata. Lo stesso vale per ripopolare il modulo - valori in una sessione var.

La convalida del modulo deve essere scritta prima sul server, sul client in seguito. In ogni caso dovresti convalidare sul server. Non fare affidamento su Ajax per qualcosa di così semplice e cruciale per il funzionamento del tuo sito come la convalida del modulo. Utilizzando uno script discreto, è possibile impedire l'invio del modulo predefinito e quindi elaborare il modulo utilizzando Ajax. Altrimenti, consenti all'invio di passare e rispondere con una pagina di convalida generata dal server.

Esegui le tue convalide sul lato server e ripopola i moduli.

La convalida tramite AJAX è simpatica , ma non può essere applicata. Pertanto, è più efficace eseguire le convalide indipendentemente dal fatto che AJAX avvenga o meno. Vorrei suggerire un secondo percorso in grado di gestire le convalide e restituire una serie di errori in JSON per coloro che hanno JavaScript. Ma per quelli senza javascript, l'unico modo in cui funzioneranno le tue convalide è attraverso il lato server.

Sfortunatamente non hai davvero scelta. Qualsiasi programmatore o hacker a metà decente con firebug può modificare il tuo javascript, staccare gli hook e aggirare tutto ciò che stai cercando di fare al suo fianco: essere paranoico e applicare la convalida sul lato server.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top