2009-04-04 8 views
4

Tout d'abord, je ne connais pas très bien les cookies, mais je sais comment ils fonctionnent. Je l'ai vu quelques tutoriels différents avec du code PHP mais je suis à la recherche d'un solide exemple de la façon de stocker des tableaux dans un cookie en utilisant la syntaxe de symfony:Comment enregistrer une série de données dans un cookie avec Symfony?

$this->getResponse()->setCookie('myCookie', $data); 

Vous ne pouvez pas passer juste un tableau car il attend une chaîne. Est-ce la seule façon de procéder pour sérialiser un tableau en premier?

Existe-t-il d'autres options lors du stockage des données dans un cookie?

Répondre

3

Vous pouvez transformer le tableau à un ensemble de valeurs clés/dans votre cookie dans le cas où le tableau est le seul sujet à stocker:

$this->getResponse()->setCookie('myCookie[0]', $data1); 
$this->getResponse()->setCookie('myCookie[1]', $data2); 
2

Vous devez probablement stocker les données dans une session plutôt que dans un cookie.

PHP le supporte automatiquement; il suffit de placer vos données dans $_SESSION['key'], et il persistera à travers les chargements de pages par cet utilisateur. En coulisses, PHP place un cookie PHPSESSID sur le client, et l'utilise pour rechercher des données sur votre serveur Web. Cela a deux avantages distincts sur l'utilisation de cookies.

  1. Les données ne peuvent pas être altérées. Les cookies peuvent être modifiés, supprimés et autrement altérés par le client. Vous ne devriez pas les utiliser pour stocker des informations importantes.
  2. Votre espace de stockage est illimité.
  3. Vous disposez de différentes options pour le stockage des données de session. Ils peuvent aller sur disque, ou dans memcache, ou peu importe.
  4. Vous pouvez stocker des types complexes tels que des tableaux ou même des instances d'objet.

Voir the PHP documentation on sessions pour plus d'informations.

+0

Cette réponse ne répond pas à la question de stocker des données * dans * un cookie. – StampyCode

3

Si vous avez vraiment besoin de le stocker dans un cookie et non une session, vous pouvez utiliser la sérialisation:

$this->getResponse()->setCookie('myCookie', serialize($data)); 

$data = unserialize($this->getRequest()->getCookie('myCookie')); 
+1

Meilleure réponse! Merci. Une chose à garder à l'esprit est que vous pourriez avoir besoin d'utiliser base64_encode() et base64_decode() pour éviter les erreurs avec certains caractères stockés dans la session. http://stackoverflow.com/questions/2692371/storing-nested-arrays-in-a-cookie/2692391#2692391 – deadwards

Questions connexes