Médiaforma

PHP MySQL – Exercice sur les cookies

Print Friendly

Définissez un formulaire dans lequel sont saisis le prénom et le nom de l’utilisateur. Mémorisez ces informations dans la page de traitement du formulaire. Ajoutez dans cette page un lien vers une troisième page et vérifiez que les cookies ont bien été mémorisés.

Solution

Faites une pause dans la vidéo et écrivez les trois pages demandées dans l’exercice. Reprenez la lecture de la vidéo pour avoir des informations détaillées sur ces trois pages.

Voici le code correspondant au formulaire de saisie :

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Transission de données par un formulaire</title>
  </head>
  <body>
    <form name="MonFormulaire" method="post" action="traitement2.php">
      <table><tr><td><label>Prénom</label></td>
      <td><input type="text" name="prenom"></td></tr>
      <tr><td><label>Nom</label></td>
      <td><input type="text" name="nom"></td></tr>
      <tr><td><input type="submit" name="Nom" value="Envoyer"></td>
      <td></td></tr>
    </table>
    </form>
  </body>
</html>

Ce formulaire est traditionnel. Il permet de saisr un prénom et un nom. Lorsque le bouton Envoyer est cliqué, le script traitement2.php est exécuté.

 

Voici le code de traitement du formulaire :

<?php
  if (isset($_POST["prenom"]))
    setcookie("prenom", $_POST["prenom"], time()+24*3600, null, null, false, true);
  if (isset($_POST["nom"]))
    setcookie("nom", $_POST["nom"], time()+24*2600, null, null, false, true);
?>
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Traitement des données envoyées par formulaire</title>
  </head>
  <body>
    Les cookies nom et prenom ont été mémorisés.<br><br>
  <a href="verif-cookies.php">Cliquez ici pour le vérifier</a>
  </body>
</html>

La première instruction vérifie si le paramètre prenom existe dans le tableau superglobal $_POST. Dans l’affirmative, le cookie prenom est créé. Sa durée de vie est de 24 heures.

La deuxième instruction vérifie si le paramètre nom existe dans le tableau superglobal $_POST. Dans l’affirmative, le cookie nom est créé. Sa durée de vie est également de 24 heures.

Un message indiquant que les cookies ont été créés est alors affiché dans le corps du document.

Puis un lien hypertexte est affiché afin de tester l’existance des cookies dans un autre document.

Voici la page permettant de tester l’existence des cookies :

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Affichage des cookies</title>
  </head>
  <body>
    <?php
    echo "Le cookie prenom a pour valeur ".$_COOKIE["prenom"]."<br>";
    echo "Le cookie nom a pour valeur ".$_COOKIE["nom"]."<br>";
  ?>
  </body>
</html>

Dans le corps du document, deux instructions echo affichent la valeur des cookies prenom et nom, lues dans le tableau superglobal $_COOKIES.

Affichons le formulaire dans WAMPServer.

Nous entrons un prénom et un nom puis nous cliquons sur le bouton Envoyer.  Le script traitemen2.php s’exécute et nous informe que les données du formulaire ont été sauvegardées dans des cookies. Nous allons le vérifier en cliquant sur le lien hypertexte. Le script verif-cookie.php s’exécute. Nous pouvons vérifier que les deux valeurs saisies se trouvent bien dans les cookies.

Une erreur classique

L’erreur « Headers already sent by » sera envoyée par PHP si les cookies ne sont pas définis avant la balise <html>.

Vous avez aimé cet article ? Partagez-le avec vos réseaux...
 
Comments

No comments yet.

Leave a Reply