création
<?php
$date = date("d-m-Y");
$heure = date("H:i");
$valeurCookie = 'Dernière visite ' . $date . ' ' . $heure;
setcookie('dateVisite', $valeurCookie, mktime(0,0,0,12,31,2037));
echo <<< FIN
<html>
<head><title>Visite</title></head>
<body>
<p> un cookie a été envoyé </p>
<p> son nom est dateVisite </p>
<p> son contenu est $valeurCookie </p>
</body>
</html>
FIN
lecture
<?php
if ( isset($_COOKIE['dateVisite'] ) ){
echo "<p>Un cookie existe</p>";
echo "<p>Son contenu est : " . $_COOKIE['dateVisite']. " </p>";
} else {
echo "<p>Pas de cookie</p>";
}
Permettent d’enregistrer une valeur textuelle
Comment enregistrer une valeur plus complexe (par ex, un tableau) ?
Il faut transformer les données en texte, par la « sérialisation ».
<?php
if (isset ( $_COOKIE['listeVisite'] ) ) {
$listeSerialisee = $_COOKIE['listeVisite'];
$listeTableau = unserialize($listeSerialisee);
} else {
$listeTableau = array();
}
$date = date("d-m-Y");
$heure = date("H:i");
$valeurCookie = 'Dernière visite ' . $date . ' ' . $heure;
$listeTableau[] = $valeurCookie;
$listeSerialisee = serialize($listeTableau);
setcookie('listeVisite', $listeSerialisee, mktime(0,0,0,12,31,2037));
echo <<< FIN
<html>
<head><title>Visite</title></head>
<body>
<p> un cookie a été envoyée sous forme de liste </p>
<p> son nom est listeVisite </p>
<p> son contenu a été enrichi $valeurCookie </p>
</body>
</html>
FIN
<?php
if ( isset($_COOKIE['listeVisite'] ) ){
$listeSerialisee = $_COOKIE['listeVisite'];
$listeTableau = unserialize($listeSerialisee);
echo "Liste des visites <br />";
foreach ($listeTableau as $visite) {
echo $visite . "<br />";
}
} else {
echo "<p>Pas de cookie</p>";
}
<?php
setcookie('nomCookie', 'valeurCookie', mktime(0,0,0,12,31,2037), '/', '.formatux.be');
setcookie('nomCookie', 'valeurCookie', '/evaluation', 'www.formatux.be');
// warning, mais OK
setcookie('nomCookie', 'valeurCookie', '/help');
// warning, mais OK
setcookie('nomCookie', 'valeurCookie', mktime(0,0,0,12,31,2037), '/help');
Exercice
# Ecrivez un script qui permette d'implémenter un compteur de visites en PHP, et qui en donne l'affichage.
<?php
if ( ! isset($_COOKIE['compteurVisite'] ) ){
$visites = 1;
} else {
$visites = $_COOKIE['compteurVisite'] + 1;
}
setcookie('compteurVisite', $visites, mktime(0,0,0,12,31,2037));
?>
<html>
<head><title>Visite</title></head>
<body>
<p> Compteur : <?php echo $visites ?> </p>
</body>
</html>
# Ecrivez un petit programme PHP qui affiche à l'utilisateur un nombre aléatoire entre 1 et 6...
# Mais, au sein de cette page, l'utilisateur doit pouvoir spécifier sa couleur préférée de fond de page dans une liste qui en compte 5 (rouge, jaune, vert, bleu, blanc).
# Lorsqu'il se connecte sur cette page, il reçoit alors la page dans sa couleur préférée.
# Attention : pour modifier sa couleur, l'utilisateur doit utiliser une liste déroulante, dans laquelle sa couleur préférée sera toujours pré-sélectionnée.
<?php
$listeCouleurs = [
"red" => "Rouge",
"green" => "Vert",
"yellow" => "Jaune",
"white" => "Blanc",
"blue" => "Bleu"
];
if (isset ($_COOKIE['couleurPreferee'])) {
$couleur = $_COOKIE['couleurPreferee'];
} else $couleur = "white";
if (isset ($_REQUEST['couleurChoisie'])) {
$couleur = $_REQUEST['couleurChoisie'];
setcookie('couleurPreferee', $couleur, mktime(0, 0, 0, 12, 31, 2037));
}
$nombre = mt_rand(1, 6);
?>
<html>
<head><title>Visite</title></head>
<body bgcolor="<?php echo $couleur ?>">
<p> NOMBRE ALEATOIRE : <?php echo $nombre ?> </p>
<br/>
<br/>
<form method="post" action="exercice_couleurPreferee.php" enctype="multipart/form-data">
<legend><b>Sélectionnez votre couleur préférée : </b></legend>
<select name="couleurChoisie">
<?php foreach($listeCouleurs as $code => $value): ?>
<option
value="<?php echo $code ?>" <?php echo($code == $couleur ? "SELECTED" : "") ?> > <?php echo $value ?> </option>
<?php endforeach; ?>
</select>
<br/>
<input type="submit" value="Soumettre"/>
</form>
</body>
</html>