GET et POST en PHP

Un navigateur Web communique avec le serveur en utilisant généralement l’une des deux méthodes HTTP – GET et POST. Les deux méthodes transmettent l’information différemment et présentent des avantages et des inconvénients.
 
 
Avant que le navigateur n’envoie les informations, il les encode à l’aide d’un schéma appelé « encodage d’URL ». Dans ce schéma, les paires nom/valeur sont jointes avec « = » et différentes paires sont séparées par &.

nom1=valeur1&nom2=valeur2&nom3=valeur3

Les espaces sont supprimés et remplacés par le caractère + et tout autre caractère non alphanumérique est remplacé par une valeur hexadécimale. Une fois l’information encodée, elle est envoyée au serveur.
 

La méthode GET

La méthode GET envoie les informations codées ajoutées à la page demandé. La page et l’information codée sont séparées par le caractère ?

http://www.test.com/action.php?nom=thomas&age=32
  • La méthode GET produit une longue chaîne de caractères qui apparaît dans les logs de votre serveur.
  • La méthode GET est limitée à l’envoi de 1024 caractères maximum.
  • N’utilisez jamais la méthode GET si vous avez un mot de passe ou d’autres informations sensibles à envoyer au serveur.
  • GET ne peut pas être utilisé pour envoyer des données binaires, comme des images ou des documents PDF, au serveur.
  • Les données envoyées par la méthode GET sont accessibles en utilisant la variable d’environnement QUERY_STRING.
  • Le PHP fournit le tableau associatif $_GET pour accéder à toutes les informations envoyées par la méthode GET.

Essayez l’exemple suivant en mettant le code source dans le script test.php.

<?php
   if( $_GET["nom"] || $_GET["age"] ) {
      echo "Votre nom est :". $_GET['nom']. "\n";
      echo "Votre age est :". $_GET['age']. " ans."; 
   }
?>
<html>
   <body>
      <form action = "<?php echo $_SERVER["PHP_SELF"];?>" method = "GET">
         Nom: <input type = "text" name = "nom" />
         Age: <input type = "text" name = "age" />
         <input type = "submit" />
      </form>
   </body>
</html>

 
 

La méthode POST

La méthode POST transfère les informations via les en-têtes HTTP. L’information est encodée comme décrit dans le cas de la méthode GET et placée dans un en-tête appelé QUERY_STRING.

  • La méthode POST n’a aucune restriction sur la taille des données à envoyer.
  • La méthode POST peut être utilisée pour envoyer des données ASCII aussi bien que des données binaires.
  • Les données envoyées par la méthode POST passent par l’en-tête HTTP, la sécurité dépend donc du protocole HTTP. En utilisant HTTPS, vous pouvez vous assurer que vos informations sont sécurisées.
  • Le PHP fournit le tableau associatif $_POST pour accéder à toutes les informations envoyées par la méthode POST.

Essayez l’exemple suivant en mettant le code source dans le script test.php.

<?php
   if( $_POST["nom"] || $_POST["age"] ) {
      echo "Votre nom est :". $_POST['nom']. "\n";
      echo "Votre age est :". $_POST['age']. " ans."; 
   }
?>
<html>
   <body>
      <form action = "<?php echo $_SERVER["PHP_SELF"];?>" method = "POST">
         Nom: <input type = "text" name = "nom" />
         Age: <input type = "text" name = "age" />
         <input type = "submit" />
      </form>
   </body>
</html>

 
 

La variable $_REQUEST

PHP fournit une variable superglobale appelée $_REQUEST qui contient les valeurs des variables $_GET et $_POST ainsi que les valeurs de la variable $_COOKIE.

<?php
   if( $_REQUEST["nom"] || $_REQUEST["age"] ) {
      echo "Votre nom est :". $_REQUEST['nom']. "\n";
      echo "Votre age est :". $_REQUEST['age']. " ans."; 
   }
?>
<html>
   <body>
      <form action = "<?php echo $_SERVER["PHP_SELF"];?>" method = "POST">
         Nom: <input type = "text" name = "nom" />
         Age: <input type = "text" name = "age" />
         <input type = "submit" />
      </form>
   </body>
</html>

 

Partagez cet article

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *