Les chaînes de requêtes (QueryStrings) correspondent à des informations associées à l'adresse URL avec un point d'interrrogation comme séparateur.

http://www.laltruiste.com/page.php?chaine_de_requete

Une chaîne de requête doit être constituée d'un ou plusieurs éléments dont chacun est associé à une valeur.Si la chaîne de requête contient plusieurs éléments, alors chaque couple élément/valeur doit être séparé par un caractère esperluette (&).

?element=valeur&element2=valeur2&...&elementN=valeurN

L'inconvénient principal des chaînes de requêtes réside dans le fait que les données transmises au serveur par ce biais sont visibles par les utilisateurs dans le champ Adresse de leur navigateur.

De plus, une chaîne de requêtes ne peut dépasser le maximum de 255 caractères.

Ainsi, l'utilisation de cette technique peut générer des problèmes de sécurité et des limitations quant à la taille des données à transmettre à une application Web.

Il existe deux méthodes pour l'utilisation des chaînes de requêtes :

  • L'insertion des informations directement après l'adresse URL de la page à atteindre.
    <form action="page.php?element=valeur"
              method="post">
      <input type="text" name="nom" value="DUPUIS">
      <input type="text" name="prenom" value="Michel">
      <input type="submit" name="Soumettre" value="Soumission">
    </form>
  • L'application de la valeur GET à l'attribut method d'un formulaire.
    <form action="page.php" method="get">
      <input type="text" name="nom" value="DUPUIS">
      <input type="text" name="prenom" value="Michel">
      <input type="submit" name="Soumettre" value="Soumission">
    </form>

Dans le premier cas, seules les informations contenues dans l'adresse indiquée par l'attribut action, seront envoyées par l'intermédiaire de la collection QueryString.

element=valeur

Dans le second cas, tous les éléments du formulaire seront transmis au moyen de la collection QueryString, à la page destinataire soit page.php.

nom=DUPUIS&prenom=Michel

En conséquence, l'expression method="get" provoque la transmission complète et automatique d'un formulaire à partir d'une chaîne de requête.

La variable d'environnement QUERY_STRING permet d'extraire une chaîne de requêtes contenu dans l'adresse URL transmise, l'ensemble des éléments et leur valeur y compris celle du bouton de soumission.

<? echo $QUERY_STRING; ?>
// Retourne
nom=DUPUIS&prenom=Michel&Soumettre=Soumission

Plus précisément, en spécifiant simplement une variable portant l'identificateur d'un élément, il devient possible de récupérer la valeur liée.

<?
  echo $nom . " " . $prenom;

// Retourne
DUPUIS Michel

La variable prédéfinie HTTP $_GET permet également de récupérer la valeur d'un élément d'une chaîne de requête. La variable $_GET est en fait un tableau associatif dont les clés sont les identificateurs et les d'une chaîne de requêtes associé aux valeurs liées.

<?
  echo $_GET["nom"] . " " . $_GET["prenom"];

// Retourne
DUPUIS Michel

Une boucle peut être utilisée pour parcourir automatiquement l'ensemble des éléments d'une chaîne de requête.

<?
  echo "<ol>";
  while (list($cle, $valeur) = each($_GET)) {
    echo "<li>".$cle." : ".$valeur."</li>";
  }
  echo "</ol>"
?>
// affiche
<ol>
  <li>nom : DUPUIS</li>
  <li>prenom : Michel</li>
  <li>Soumettre : Soumission</li>
</ol>

La boucle foreach plus compacte produit le même effet.

foreach($HTTP_GET_VARS as $cle => $valeur) {
  echo $cle." : ".$valeur."\n";
}

Le tableau associatif $_GET étant définie dans la version PHP 4.1.0, il faudra utiliser la variable $HTTP_GET_VARS pour assurer la compatibilité avec des versions plus anciennes.

Un autre tableau associatif $_POST ou $HTTP_POST_VARS contient toutes les variables passées au script courant par l'intermédiaire d'une requête HTTP POST (voir les formulaires).

Exemple [voir]
<!-- Formulaire -->
<html>
  <body>
    <form 
          action="traitement.php"
          method="get"
          name="formGet">

      <u>Saisir un titre :</u><br>
      <input type="text" name="Titre" value="Fatrasie" size="20"><br>

      <textarea name="Paragraphe" cols="30" rows="4">
        La chose va très mal
        Où point n'a de justice
        La chose va très mal
        Dit un veau de métal
      </textarea>

      <input type="submit" name="Soumettre" value="Soumission">

    </form>

  </body>
</html>

<html>
  <body>
    <h2>La chaîne de requête</h2>
    <h3>
      <? echo $QUERY_STRING; ?>
    </h3>
    <table>
      <tr>
        <th>Elément</th>
        <th>Valeur</th>
      </tr>
      <?
        $index = 0;
        foreach($HTTP_GET_VARS as $cle => $valeur) {
          $index++;
          echo "<tr><td><u>" . $cle . "(" . $index 
                         . ") </u></td><td><b>" . $valeur
                              . "</b></td></tr>";
        }
      ?>
    </table>
  </body>
</html>