Quel est le meilleur moyen de repeupler un formulaire et d’afficher des erreurs sans script?

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

  •  05-07-2019
  •  | 
  •  

Question

Je construis une application qui utilise des appels ajax pour la validation de formulaires et d’autres, le problème est que je ne l’aime pas quand ces erreurs de validation apparaissent sur une nouvelle page sans aucun fichier CSS et que le formulaire est réinitialisé complètement sans les javascripts.

Je parle d'une douzaine de formulaires, il sera donc très ennuyant pour l'utilisateur de parcourir les formulaires encore et encore.

J'ai lu des réponses sur ce sujet, mais existe-t-il un moyen spécifique, une meilleure pratique pour une situation comme celle-ci (plus dans les lignes de validation de formulaire)?

Excuses s'il y a déjà une réponse.

Modifier:

Toutes les validations sont effectuées côté serveur. Actuellement, les erreurs sont affichées à l'aide de ajax. Ce que je voudrais, c’est une méthode pratique pour repeupler le formulaire et afficher les erreurs sans JavaScript si une erreur se produit lors du traitement du formulaire.

Était-ce utile?

La solution

Je ne suis pas sûr si votre question laisse entendre que vous ne validez pas sur le serveur - cela serait considéré comme un énorme trou de sécurité, car il est évident que des formulaires pourraient être contournés en désactivant simplement le langage Javascript. Vous devez valider chaque fois sur le serveur, alors que la validation côté client est tout simplement agréable à faire.

En outre, le "problème" de réinitialiser les formulaires lorsque la page est rechargée devient inutile lorsque vous utilisez un framework correct - En Python, Django repeuple automatiquement les formulaires en cas d'erreur. En PHP, CakePHP et CodeIgniter font de même, et je suis sûr que la plupart des bons frameworks le font, car ils entrent dans la catégorie des "tâches communes". ces cadres sont censés faire abstraction.

Chaque fois que je n'utilise pas de framework, j'écris ma propre petite classe Form qui répond à vos besoins.

MODIFIER :

Je ne suis au courant de rien que vous puissiez ajouter à ce que vous devez pouvoir repeupler le formulaire. Votre meilleur pari est d’écrire votre propre petite classe, ce qui ne devrait pas prendre plus d’une heure.

Autres conseils

Normalement, je stocke toutes les chaînes d'erreur d'un tableau dans une variable de session (j'utilise PHP). S'il y a une erreur côté serveur, redirigez l'utilisateur vers la page de formulaire, recherchez la variable de session et affichez les erreurs le cas échéant. Assurez-vous de désélectionner la session var pour libérer de la mémoire après l'avoir affichée. Il en va de même pour le repeuplement des valeurs de formulaire dans une session var.

La validation du formulaire doit d'abord être écrite sur le serveur, puis sur le client. Vous devez valider sur le serveur dans tous les cas. Ne vous fiez pas à Ajax pour quelque chose d'aussi simple et crucial pour le fonctionnement de votre site que la validation de formulaire. En utilisant des scripts non intrusifs, vous pouvez empêcher la soumission de formulaire par défaut, puis traiter le formulaire à l'aide d'Ajax. Sinon, autorisez l'envoi et répondez avec une page de validation générée par le serveur.

Effectuez vos validations côté serveur et repeupler les formulaires.

La validation via AJAX est sympa , mais ne peut pas être appliquée. Ainsi, il est plus efficace d’effectuer les validations que l’AJAX se produise ou non. Je suggérerais un deuxième itinéraire capable de gérer les validations et de renvoyer un tableau d'erreurs en JSON pour ceux qui utilisent du javascript. Mais pour ceux qui ne disposent pas de javascript, la validation de vos validations se fera uniquement côté serveur.

Malheureusement, vous n’avez pas vraiment le choix. Tout programmeur ou pirate informatique à la moitié décent avec firebug peut modifier votre javascript, détacher les points d'ancrage et contourner tout ce que vous essayez de faire: soyez paranoïaque et imposez la validation côté serveur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top