5.3.5 Variables externes à PHP
5.3 Les variables
5 Référence du langage
Manuel PHP
. Formulaires HTML (GET et POST) ->Cookies HTTP . Cas des points dans les noms de variables . Détermination du type des variables
|
5.3.5.2 Cookies HTTP
PHP supporte les cookies HTTP de manière totalement
transparente, comme défini dans les
spécifications de Netscape . Les cookies
sont un mécanisme permettant de stocker des données
sur la machine cliente à des fins d'identification de
l'utilisateur. Vous pouvez établir un cookie grâce à
la fonction
setcookie
. Les cookies
font partie intégrante des en-têtes HTTP et donc
la fonction
setcookie
doit être
appelée avant que le moindre affichage ne soit envoyé
au navigateur. C'est la même restriction que pour la fonction
header
. Les données contenus dans les cookies
sont alors disponibles dans les tableaux de cookies appopriés, comme
$_COOKIE
,
$HTTP_COOKIE_VARS
mais aussi
$_REQUEST
. Lisez la page de la documentation
sur la fonction
setcookie
pour plus de détails ainsi que des exemples.
Si vous souhaitez assigner plusieurs valeurs à un seul
cookie, il vous faut ajouter les caractères
[]
au nom de votre cookie.
Par exemple :
| Utilisation de tableaux avec les cookies |
<?php setcookie("MyCookie[foo]", 'Test 1', time()+3600); setcookie("MyCookie[bar]", 'Test 2', time()+3600); ?>
|
Cela va créer deux cookies distinctes bien que
MyCookie
est maintenant un simple tableau dans votre script. Si vous voulez définir
seulement un cookie avec plusieurs valeurs, utilisez la fonction
serialize
ou
explode
sur la première valeur.
Il est à noter qu'un cookie remplace le cookie
précédent par un cookie de même nom tant que
le "
path
" ou le domaine sont identiques.
Donc, pour une application de panier, vous devez implémenter
un compteur et l'incrémenter au fur et à mesure. C'est-à-dire :
| Exemple avec setcookie |
<?php if (isset($_COOKIE['compte'])) { $compte = $_COOKIE['compte'] + 1; } else { $compte = 1; } setcookie('Panier', $compte, time()+3600); setcookie("Panier[$compte]", $item, time()+3600); ?>
|
|