3. Passage de valeurs entre pages

Résumé

La navigation de page en page sur un site Internet est une opération naturelle pour l'utilisateur. Du point de vue du développeur, il est parfois nécessaire de conserver des informations tout au long de la session d'un internaute, pour par exemple se souvenir de son login, du nombre de page qu'il a visité, de son panier d'achat, etc .. Nous distinguerons 4 manières différentes d'implémenter cette notion dans les codes PHP :

  1. l'ajout d'information dans un lien hypertexte (dans l'url cible)

  2. le passage de données via un formulaire

  3. l'utilisation de cookies

  4. l'utilisation de variables de session

Nous examinerons les 3 premières solutions dans ce chapitre, et nous reviendrons dans le dernier chapitre sur la notion de variables de session.

3.1. Passages de variables dans l'url

Si les formulaires constituent un élément essentiel d'interaction avec l'utilisateur et les pages HTML, il est généralement nécessaire de passer des informations de page en page, sans utiliser de formulaires. Pour cela, nous utilisons la méthode GET du protocole HTTP, qui permet d'ajouter des valeurs à l'URL. Néanmois, il faut considérer cette méthode comme un risque de sécurité.

Le principe consiste à ajouter le couple variables/valeur en fin d'URL, en séparant chaque couple par des &. L'ensemble des arguments est séparé de l'URL par un ?.

Exemple 12. Passage de paramètre par URL


<a href="trait.php?nom=kurzweg&prenom=ivan">cliquez ici pour vous enregistrer</a>
<? $prenom="ivan" ?>
<? $nom="kurzweg" ?>
<a href="trait.php?nom=<?echo $nom;?>&prenom=<?echo $prenom;?>">
cliquez ici pour vous enregistrer</a>



Note

Cette technique est limité par la longueur maximale d'une URL, qui varie d'un navigateur à l'autre, et d'un serveur à l'autre. Elle présente également le défaut de montrer en clair les valeurs passées en paramètres, y compris par exemple des mots de passe ! A n'utiliser donc qu'avec parcimonie !

3.2. Formulaires

Nous avons vu dans le cours HTML l'utilisation des formulaires et des différents champs qui peuvent les composer. Nous avons également vu l'attribut HTML action qui permet de spécifier la page sur laquelle seront traitées les données.

PHP dispose bien sûr de caractéristiques intéressantes pour traiter les formulaires. Selon la méthode d'envoi du formulaire, GET ou POST, l'ensemble des valeurs sont stockées dans un tableau indicé sur le nom des champs. Ce tableau est $_GET ou $_POST selon le mode d'action.

Le traitement des données du formulaires est donc lié au traitement du tableau. L'exemple ci-dessous montre le traitement d'un formulaire simple :

Exemple 13. Traitement d'un champ texte d'un formulaire



Exemple 1 : un formulaire simple, et le code PHP affichant le résultat : 

<form method="POST" action="exemple.php" >
    <input name="mon_champ" type="text"/>
    <input name="valider" type="submit" value="OK"/>
</form>

<?
if (isset($_POST['mon_champ'])) {
?>
    Votre champ contenait :
    <b><?php echo $_POST['mon_champ']; ?></b>
    <br/><br/>
<?php
}
?>



Exemple 14. Traitement d'un champ radio d'un formulaire et ré-affichage du formulaire



<?php
$mon_champ = isset($_POST['mon_champ']) ? $_POST['mon_champ'] : '';
 
if ($mon_champ) {
?>
    Vous avez choisi :
    <b><?php echo $mon_champ; ?></b>
    <br/><br/>
<?php
}
?>
 
<form method="POST">
    <input type="radio" name="mon_champ" value="Option 1" 
       <?php if($mon_champ == "Option 1") { echo 'checked'; } ?>/>Option 1<br/>
    <input type="radio" name="mon_champ" value="Option 2" 
       <?php if($mon_champ == "Option 2") { echo 'checked'; } ?>/>Option 2<br/>
    <input type="radio" name="mon_champ" value="Option 3" 
       <?php if($mon_champ == "Option 3") { echo 'checked'; } ?>/>Option 3<br/>
    <input type="submit" value="OK"/>
</form>





Exemple 15. Traitement d'un champ liste d'un formulaire et ré-affichage du formulaire


<?php
$mon_champ = isset($_POST['mon_champ']) ? $_POST['mon_champ'] : '';
 
if ($mon_champ) {
?>
    Votre champ contenait :
    <b><?php echo $mon_champ; ?></b>
    <br/><br/>
<?php
}
?>
 
<form method="POST">
    <select name="mon_champ">
        <option <?php if($mon_champ == "Option 1") { echo 'selected'; } ?>>
              Option 1</option>
        <option <?php if($mon_champ == "Option 2") { echo 'selected'; } ?>>
              Option 2</option>
        <option <?php if($mon_champ == "Option 3") { echo 'selected'; } ?>>
              Option 3</option>
    </select>
    <input type="submit" value="OK"/>
</form>



3.3. Cookies

Les cookies sont des petites quantités d'informations contenant des paires variables=valeur, stockées sur le navigateur de l'utilisateur. Ce stockage déporté sur le client pose bien évidemment des problèmes : l'utilisateur peut refuser les cookies, ou encore les supprimer régulièrement, empêchant ainsi votre application de fonctionner correctement.

La fonction setcookie("variable", "valeur") permet de créer un cookie et d'y stocker la paire de valeur. L'utilisation des cookies étant problématique, nous ne nous attardons pas plus sur leur fonctionnement.

3.4. Exercices d'applications

Ecrire un formulaire qui permettent de rentrer les données d'une fiche stagiaire. Le formulaire envoie les valeurs stockées vers votre page "cv", modifier pour être remplie dynamiquement par les valeurs fournies.

Skins :
Transparence
Simple
Page Accueil
Formation