Variables GET non transmises lorsqu'elles sont mélangées avec une URL
Question
Pourquoi, lorsque je passe des paramètres via une URL codée et une méthode GET sous forme HTML, les paramètres codés par une URL sont supprimés?
par exemple. Configuration:
<form action="process.php?hello=world" method="GET">
<input type="text" name="foo" value="bar">
<input type="submit">
</form>
Résultat: la variable hello
ne sera pas reconnue dans process.php
.
Est-ce une mauvaise pratique?
Est-ce ainsi que PHP le traite ou est-ce lié à la manière dont le navigateur envoie la demande? Le même problème existe-t-il dans d'autres langues?
La solution
Oui, c'est une mauvaise pratique car cela ne fonctionne tout simplement pas.
Si vous souhaitez passer " saisie de formulaire masquée " alors vous devez utiliser un élément de formulaire caché:
<input type="hidden" name="hello" value="world" />
Comme le dit rezzif dans son commentaire, vous pouvez mélanger GET & amp; POSTE comme ceci:
<form action="/something?foo=bar" method="POST">
<input type="text" name="baz" />
</form>
En règle générale, j’évite toutefois de mélanger les deux. Je trouve cela bizarre d’avoir des paramètres GET dans mon action de formulaire.