PHP - Méthodes GET & POST

Le client du navigateur peut envoyer des informations au serveur Web de deux manières.

  • La méthode GET
  • La méthode POST

Avant que le navigateur 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 des signes égaux et différentes paires sont séparées par l'esperluette.

name1=value1&name2=value2&name3=value3

Les espaces sont supprimés et remplacés par le caractère + et tous les autres caractères non alphanumériques sont remplacés par des valeurs hexadécimales. Une fois les informations codées, elles sont envoyées au serveur.

La méthode GET

La méthode GET envoie les informations utilisateur codées ajoutées à la demande de page. La page et les informations encodées sont séparées par le? personnage.

http://www.test.com/index.htm?name1=value1&name2=value2
  • La méthode GET produit une longue chaîne qui apparaît dans les journaux de votre serveur, dans la zone Emplacement: du navigateur.

  • La méthode GET est limitée à l'envoi de 1 024 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 Word, au serveur.

  • Les données envoyées par la méthode GET sont accessibles à l'aide de la variable d'environnement QUERY_STRING.

  • Le PHP fournit $_GET tableau associatif pour accéder à toutes les informations envoyées en utilisant la méthode GET.

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

<?php
   if( $_GET["name"] || $_GET["age"] ) {
      echo "Welcome ". $_GET['name']. "<br />";
      echo "You are ". $_GET['age']. " years old.";
      
      exit();
   }
?>
<html>
   <body>
   
      <form action = "<?php $_PHP_SELF ?>" method = "GET">
         Name: <input type = "text" name = "name" />
         Age: <input type = "text" name = "age" />
         <input type = "submit" />
      </form>
      
   </body>
</html>

Il produira le résultat suivant -

La méthode POST

La méthode POST transfère les informations via des en-têtes HTTP. Les informations sont codées comme décrit dans le cas de la méthode GET et placées 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 ainsi que des données binaires.

  • Les données envoyées par la méthode POST passent par l'en-tête HTTP, donc la sécurité dépend du protocole HTTP. En utilisant HTTP sécurisé, vous pouvez vous assurer que vos informations sont sécurisées.

  • Le PHP fournit $_POST tableau associatif pour accéder à toutes les informations envoyées en utilisant la méthode POST.

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

<?php
   if( $_POST["name"] || $_POST["age"] ) {
      if (preg_match("/[^A-Za-z'-]/",$_POST['name'] )) {
         die ("invalid name and name should be alpha");
      }
      echo "Welcome ". $_POST['name']. "<br />";
      echo "You are ". $_POST['age']. " years old.";
      
      exit();
   }
?>
<html>
   <body>
   
      <form action = "<?php $_PHP_SELF ?>" method = "POST">
         Name: <input type = "text" name = "name" />
         Age: <input type = "text" name = "age" />
         <input type = "submit" />
      </form>
   
   </body>
</html>

Il produira le résultat suivant -

La variable $ _REQUEST

La variable PHP $ _REQUEST contient le contenu de $ _GET, $ _POST et $ _COOKIE. Nous discuterons de la variable $ _COOKIE lorsque nous expliquerons les cookies.

La variable PHP $ _REQUEST peut être utilisée pour obtenir le résultat des données de formulaire envoyées avec les méthodes GET et POST.

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

<?php
   if( $_REQUEST["name"] || $_REQUEST["age"] ) {
      echo "Welcome ". $_REQUEST['name']. "<br />";
      echo "You are ". $_REQUEST['age']. " years old.";
      exit();
   }
?>
<html>
   <body>
      
      <form action = "<?php $_PHP_SELF ?>" method = "POST">
         Name: <input type = "text" name = "name" />
         Age: <input type = "text" name = "age" />
         <input type = "submit" />
      </form>
      
   </body>
</html>

Ici, la variable $ _PHP_SELF contient le nom du script self dans lequel elle est appelée.

Il produira le résultat suivant -