X-Space

Aller au contenu | Aller au menu | Aller à la recherche

dimanche, octobre 1 2006

Is it a bug ?

Le Bug

Dans un formulaire, j'utilise dans un un champ input de type hidden pour masquer une valeur nécessaire à un traitement php. Or il s'est avéré que ce champ ne se vidait pas même après un reset du formulaire. Après m'être arraché les cheveux pendant plusieurs heures, j'ai décidé de mettre en place un protocole de test pour localiser le problème.

Le Protocole de test

  1. Un formulaire simple: 2 champs de type text et un de type hidden.
  2. Le champ 1 doit être rempli manuellement.
  3. Et les deux autres sont remplis via une petite fonction javascript qui copie les valeurs.
  4. On reset le formulaire.
  5. On valide le formulaire.
  6. Ne reste plus qu'a afficher le contenu des variables du formulaire.

Théoriquement, toutes les valeurs sont vides. Or il s'avère que sous Firefox et Opera le champ hidden contient toujours une valeur. Sous Internet Explorer par contre le champ est bien vidé. L'utilisation du plugin Firefox Web developer permet de constater ceci de visu en affichant les détails du formulaire.

Le test

Que pensez de cela? Est ce normal?

Regardons la spécification HTML 4.01 du W3C.

hidden controls

Authors may create controls that are not rendered but whose values are submitted with a form. Authors generally use this control type to store information between client/server exchanges that would otherwise be lost due to the stateless nature of HTTP (see [RFC2616]). The INPUT element is used to create a hidden control.

reset buttons

When activated, a reset button resets all controls to their initial values.

Initial Value

In general, a control's "initial value" may be specified with the control element's value attribute.

En résumé, un champ hidden permet de stocker de façon cachée des données. Et le bouton reset doit remettre les valeurs des formulaires à leur valeur par défaut. Mais ceci n'explique pas le comportement de Firefox et Opera.?

En creusant un peu plus, je suis tombé sur la spécification HTML 2.0 du champ de type hidden.

Hidden Field

The user does not interact with this field instead, the VALUE attribute specifies the value of the field.

L'utilisateur ne doit pas interagir avec ce champ!

Mes Conclusions

Il semble que les développeurs des navigateurs web aient interprétés ceci en désactivant la fonction reset sur les champs hidden. Mais ceci est une mauvaise interprétation de la spécification car si on considère que l'on ne doit pas interagir avec le champ alors on ne doit pas pouvoir le modifier par JavaScript. D'autre part, le fait de la remettre à zéro n'est pas problématique car si l'on ne peut interagir avec ce champ sa valeur est défini par value donc en faisant un reset on redonne au champ cette valeur, ce qui ne modifie pas la valeur.

N'ayant pas trouvé de spécification de Firefox me permettant de connaître les choix d'implémentation des développeurs, je ne vois pas d'autres hypothèses.

Ma Solution

Pour contourner cette limitation, j'ai tout simplement redéfini le fonctionnement de reset() par une fonction javascript qui effectue un reset et force la valeur du champ à la chaîne vide. Reste plus qu'a lier cette fonction à l'événement onreset de l'élément form.

mardi, septembre 19 2006

Normalisation des données

L'Administration Francaise s'est lancé dans un travail de normalisation des données afin de faciliter les échanges entre bases de données. Leurs travaux sont publics. Si jamais vous vous posez des questions sur la facon d'organiser vos données, cela vaut le coup d'oeil.

Le Modèle de Données Communes

Les Ateliers - ADELE

dimanche, septembre 10 2006

Quelques éditeurs PHP

Tout bon développeur, vous le dira: sous Windows, rien ne vaut le Bloc Note pour travailler. Aucune fioriture, c'est l'éditeur le plus basique, toutefois je trouve que pour gagner du temps rien ne vaut certaines fonctionnalités.

Lire la suite...

dimanche, août 20 2006

AJAX, fête des fleurs

Petite présentation de l'AJAX.

Lire la suite...

dimanche, avril 9 2006

Libéralisation des .fr

L'AFNIC ouvre le .fr aux particuliers à partir du 20 juin 2006

Source

Comment migrer un site web?

Hier matin, j'ai procédé à la migration d'un site web, hébergé jusqu'alors en mutualisé, vers mon serveur. A ce propos plusieurs questions se sont posées:

  • Comment importer directement le contenu du ftp?
  • Comment modifier massivement et le plus simplement possible les liens présents à la fois dans les fichiers et dans la base de donnée?
  • Voici les solutions que j'ai adoptées.

Lire la suite...

lundi, février 13 2006

Raid Organizer

Présentation du projet sur lequel je travaille actuelement: un gestionnaire pour les raids dans World Of Warcraft.

Lire la suite...

mercredi, novembre 23 2005

Livebox Script

Mardi 26 Avril 2005, ce jour est a marquer d'une pierre blanche dans l'histoire du web francophone...

Lire la suite...

vendredi, novembre 11 2005

MySQL 5

Retrouver l'id du dernier enregistrement effectué:
SELECT LAST_INSERT_ID()
Plus d'infos

page 2 de 2 -