Je me demande si quelqu'un peut donner une réponse aux "meilleures pratiques" en utilisant des actions de formulaire HTML vierges pour publier sur la page actuelle.
Il y a un message demandant ce que fait une action de formulaire HTML vierge ici et certaines pages comme celle-ci suggèrent que c'est bien, mais j'aimerais savoir ce que les gens pensent.
forms
web-standards
string
html
Matt Mitchell
la source
la source
<form name="xyz" >
). Il soumettra l'action de son propre chef.Réponses:
La meilleure chose que vous puissiez faire est de supprimer complètement l'attribut action. Si vous l'omettez, le formulaire sera envoyé à l'adresse du document, c'est-à-dire la même page.
Il est également possible de le laisser vide, et tout navigateur implémentant l'algorithme de soumission de formulaire HTML le traitera comme équivalent à l'adresse du document, ce qu'il fait principalement parce que c'est ainsi que les navigateurs fonctionnent actuellement:
Cela fonctionne certainement dans tous les navigateurs actuels, mais peut ne pas fonctionner comme prévu dans certains navigateurs plus anciens ( "les navigateurs font des choses étranges avec une action vide =" "attribut " ), c'est pourquoi la spécification décourage fortement les auteurs de la laisser vide :
la source
action=""
- voir ma réponse ...En fait, la sous - section Soumission de formulaire du brouillon HTML5 actuel ne le permet pas
action=""
. C'est contre la spécification.La section citée dans la réponse de Mercator est une exigence sur les implémentations , pas sur les auteurs . Les auteurs doivent suivre les exigences des auteurs. Pour citer Comment lire cette spécification :
Le changement par rapport à HTML4 - qui autorisait une URL vide - a été effectué parce que «les navigateurs font des choses étranges avec un
action=""
attribut vide ». Compte tenu de la raison du changement, il est probablement préférable de ne pas le faire en HTML4 non plus.la source
action
attribut pour indiquer que le formulaire doit être soumis à l'adresse du document? Il semble, car il dit, "si spécifié."Ne pas inclure l'attribut action ouvre la page aux attaques de détournement de clics iframe , qui impliquent quelques étapes simples:
Références
la source
$_POST
au lieu de$_REQUEST
pour éviter cela. Si le code cadre utilise$_REQUEST
, utilisez un buster iframe .Cela sera validé avec HTML5.
la source
action="."
?action="."
est une mauvaise idée pour le cas général. Une URL commeexample.com/login
est mappée simplementexample.com/
.EN HTML 5
action=""
N'EST PAS PRIS EN CHARGE, DONC NE LE FAITES PAS. MAUVAISE PRATIQUE.Si au lieu de cela vous annulez complètement l'action, elle se soumettra à la même page par défaut, je pense que c'est la meilleure pratique:
Si vous rédigez le formulaire en utilisant php, vous pouvez envisager les points suivants. en savoir plus ici.
Vous pouvez également utiliser
#
garder à l'esprit que cela agira comme une ancre et défilera vers le haut de la page.la source
htmlspecialchars()
fonction empêche les gens d'utiliser le script php contre vous.J'utilise normalement action = "", qui est valide en XHTML et conserve les données GET dans l'URL.
la source
Je pense qu'il est préférable d' indiquer explicitement où le formulaire est publié. Si vous voulez être totalement sûr, entrez la même URL que le formulaire se trouve dans l'attribut action si vous voulez qu'il se soumette à lui-même. Bien que les navigateurs traditionnels soient évalués
""
sur la même page, vous ne pouvez pas garantir que les navigateurs non traditionnels le seront.Et bien sûr, l'URL entière, y compris les données GET comme Juddling, le souligne.
la source
Utilisez simplement
Il ne viole pas les normes HTML5.
la source
get
paramètres. Un formulaire sur l'URL suivante se briseraitexample.com/update_user?user_id=1
car le formulaire sera soumis àexample.com/update_user?
J'avais l'habitude de faire beaucoup de choses quand je travaillais avec Classic ASP. Habituellement, je l'ai utilisé lorsque la validation côté serveur était nécessaire pour l'entrée (avant l'époque d'AJAX). Le principal inconvénient que je vois est qu'il ne sépare pas la logique de programmation de la présentation, au niveau du fichier.
la source
J'utilise pour ne pas spécifier du tout d'attribut d'action. C'est en fait la façon dont mon framework est conçu, toutes les pages sont renvoyées exactement à la même adresse. Mais aujourd'hui, j'ai découvert un problème. Parfois, j'emprunte une valeur d'attribut d'action pour effectuer un appel en arrière-plan (je suppose que certaines personnes les appellent AJAX). J'ai donc trouvé qu'IE conserve la valeur de l'attribut d'action vide si l'attribut d'action n'était pas spécifié. C'est un peu étrange à ma connaissance, car si aucun attribut d'action n'est spécifié, l'homologue JavaScript doit être au moins indéfini. Quoi qu'il en soit, mon point est avant de choisir la meilleure pratique, vous devez comprendre plus de contexte, comme allez-vous utiliser l'attribut en JavaScript ou non.
la source