5176 sujets

Le Bar du forum

Salut tout le monde,

(Je poste ceci dans le bar car c'est un message transversal que je en parvenais pas à caser dans les autres rubriques)

Dans le développement Web, la mise en place de contrôles des données envoyées par un formulaire me gène particulièrement.

En effet, puisque je désire à la fois faire une vérification côté client en javascript pour le confort et côté serveur en PHP pour la sécurité, je me retrouve à chaque fois avec deux codes assez tortueux à maintenir.
Le pire, c'est quand on effectue une modification du formulaire côté HTML et qu'il faut adapter les scripts de validations en conséquence.

Pour remédier à ce problème, j'ai une idée :
- décrire mon formulaire en XForms (même si le XForms sert d'abord à construire des formulaires opérationnels, je parle ici de décrire)
- à partir de cette description, le PHP génère mon formulaire HTML à l'emplacement souhaité
- à l'envoi des données, le javascript interprète cette description afin d'appliquer les contrôles côté client
- le PHP fait de même côté serveur

Ainsi, je n'ai qu'un seul document à modifier.

La partie d'XForms qui m'intéresse ici est celle-ci : http://www.yoyodesign.org/doc/w3c/xforms1/slice6.html

Malheureusement, je n'ai ni le temps ni les compétences pour me lancer dans une tâche de cette ampleur, donc j'aimerai savoir si :
- j'hallucine complètement et ce que je demande n'est pas possible techniquement
- l'un d'entre vous a déjà entrepris de mettre en place un tel système
- il existe une classe PHP permettant de lire XForms pour produire du HTML et opérer une vérification
- il existe un script javascript pouvant lire XForms pour opérer une vérification

J'espère que vous avez compris Smiley ravi
Je suis très intéressé par le sujet aussi Smiley cligne

C'est pourquoi je fais remonter le sujet pour voir si du monde serait en mesure de donner plus d'informations actuelles sur la technologie XForms ?

Merci Smiley smile
XForms étant un langage XML, la transformation en HTML doit être faisable avec une moulinette XSLT, à mon avis là n'est pas le problème.

Passons à la question js :
Le php est capable de générer aussi du js. Inconvénient pour les puristes : le script est intégré à la page et ne peut pas, ou très difficilement être externalisé. De plus, XSLT ne peut pas générer du js, il faut donc parcourrir manuellement les données pour pouvoir générer un script de vérification.

Mais ! Le js sait aussi lire du XML via XMLHttpRequest / DOMXML.
Inconvénient : Le script à créer pour pouvoir prendre en compte tous les cas possibles et imaginables devra sans doute être affreusement volumineux, pour finalement n'utiliser qu'une petite partie sur une certaine page donnée. De plus, le fichier XML doit être chargé par le client. Enfin, tous les navigateurs supportant js ne supportent pas forcément AJAX, de ce fait ces clients-là ne profiteront pas des avantages de la vérification côté client.

Maintenant, la question php :
IL faut parcourir le fichier une nouvelle fois, et manuellement, à la réception des données pour vérifier que les champs correspondent et sont corrects.

Donc je dis : possible, mais fastidieux.
Modifié par Felipe (26 May 2007 - 21:46)
La validation côté client est-elle absolument nécessaire ? Si elle est faite à l'envoi du formulaire et non au fur et à mesure de la frappe, la valeur ajoutée me parait mince.

On recharge la page et puis zou. D'autant plus que ça a un effet secondaire intéressant : ça ramène au début du formulaire et l'utilisateur n'est pas obligé de remonter dans le formulaire pour voir où sont les erreurs.

La solution XForms me parait excessivement compliquée, à moins de faire 5 formulaires par jour, ça me paraît peu rentable.

Personnellement, je ferais un bête jeu de fonctions PHP, une par type de données, qui renvoient vrai ou faux selon que la donnée est valide. Ces fonctions seraient appelées via XMLHttpRequest/AJAX à la saisie d'un champ et dans le script PHP qui reçoit le formulaire.
Modifié par Lanza (25 May 2007 - 23:00)
Lanza a écrit :
D'autant plus que ça a un effet secondaire intéressant : ça ramène au début du formulaire et l'utilisateur n'est pas obligé de remonter dans le formulaire pour voir où sont les erreurs.

Je ne pense pas que cela soit une raison valable ! Il est tous à fait possible de faire un focus sur le champ du formulaire en javascript.