GET vs POST

Faut-il utiliser plutôt la methode GET pour envoyer les données d'un formulaire HTML, ou la méthode POST?

GET et POST sont des méthodes d'accès définies dans le protocole HTTP et reprises dans la spécification HTML.
Le choix de la méthode dépend de la façon dont les données sont reçues, de la taille et la nature des données.

La méthode GET ajoute les données à l'URL

Dans un formulaire, elle est spécifiée ainsi:

<form method="get" action="page.html">
</form> 

Avec cette méthode, les données du formulaire seront encodées dans une URL. Celle-ci est composée du nom de la page ou du script à charger avec les données de formulaire empaquetée dans une chaîne.
Les données sont séparées de l'adresse de la page pas le code ? et entre elles par le code &.

Ainsi si on envoie à page.html les valeurs "couleur bleu" et "forme rectangle", l'URL construite par le navigateur sera:

http://www.xul.fr/page.html?couleur=bleu&forme=rectangle 

La spécification HTML 4 demande que l'on utilise GET quand la requête ne cause pas de changement dans les données, donc opère une simple lecture. (Référence).

Les données de formulaire doivent être uniquement des codes ASCII. La taille d'une URL est limitée à par le serveur, souvent un peu plus de 2000 caractères, en comprenant les codes d'échappement.

Noter que lorsqu'on utilise le bouton retour, les requêtes GET sont exécutées à nouveau.

La méthode POST n'a pas de taille limite

Dans un formulaire, elle est spécifiée ainsi:

<form method="post" action="page.php">
</form> 

Elle envoit un en-tête et un corps de message au serveur. Le corps est généralement constitué des données entrées dans le champ de formulaire par l'utilisateur.

Les données du formulaire n'apparaissent pas dans l'URL. En conséquence, il n'est pas possible de récupérer directement les données en JavaScript , il faut ajouter du code PHP dans la page:

<?php
 $couleur = $_POST['couleur'];
 $forme = $_POST['forme'];
?>
... code HTML ... 

On peut toutefois assigner les données récupérées en PHP à un script JavaScript:


<script>
 var couleur = <?php echo $couleur;?>;
 var forme = <?php echo $forme;?>;
</script>

Conclusion

La méthode GET est la valeur de méthode par défaut. On l'utilise de préférence sauf si on ne veut pas que les paramètres soient ajoutés à l'URL.Elle permet de récupérer les données passées à la page avec du code JavaScript.

La méthode POST est indispensable pour des codes non ASCII, des données de taille importante, et elle est recommandée pour modifier les données sur le serveur, et pour les données sensible comme expliqué par le W3C.
Si l'on utilise POST, on doit intégrer du code PHP (ou autre langage) dans la page ou les données seront utilisées.

Voir aussi

© 2010-2014 Xul.fr