Est-il légal d'avoir un formulaire HTML avec plus d'un élément de contrôle "caché" avec le même nom? Je m'attends à obtenir les valeurs de tous ces éléments sur le serveur. Si c'est légal, les principaux navigateurs implémentent-ils correctement le comportement ?
Réponses
Trop de publicités?Les navigateurs sont OK avec elle. Cependant, la façon dont la bibliothèque de l'application l'analyse peut varier.
Les programmes sont censés de groupe portant le même nom à des éléments ensemble. Alors que la spécification HTML n'est pas explicitement dis cela, c'est implicitement indiqué dans la documentation sur les cases à cocher:
Plusieurs cases à cocher dans un formulaire peut partager le même nom de contrôle. Ainsi, pour exemple, les cases à cocher autoriser les utilisateurs à sélectionner plusieurs valeurs pour un même de la propriété.
Oui, et la plupart des serveurs d'application permettra de recueillir les éléments correspondants et de les concaténer avec des virgules, tels qu'un formulaire comme ceci:
<html>
<form method="get" action="http://myhost.com/myscript/test.asp">
<input type="hidden" name="myHidden" value="1">
<input type="hidden" name="myHidden" value="2">
<input type="hidden" name="myHidden" value="3">
<input type="submit" value="Submit">
</form>
</html>
... permettrait de résoudre à une URL (dans le cas -- POST fonctionne de la même façon, tout de même) comme ceci:
http://myhost.com/myscript.asp?myHidden=1&myHidden=2&myHidden=3
... et d'être exposés à vous en code comme ceci: (par exemple, à la suite de quelque chose comme Réponse.Écrire(À La Demande.QueryString("myHidden")):
1, 2, 3
Afin de saisir les valeurs, vous devriez juste fractionner la chaîne et d'y accéder comme un tableau (ou tout ce qui est comparable dans la langue de votre choix).
(Doit être précisé: En PHP, c'est légèrement différent (comme Johnathan souligne, support de la notation expose les éléments d'un tableau à votre code PHP), mais l'ASP, ASP.NET et CF exposent tous les valeurs d'une liste séparée par des virgules. Donc oui, la double appellation est tout à fait valable.)