Nasıl Symfony ile bir tanımlama veri dizisini kaydedebilirim?

3 Cevap php

First off, I'm not all that familiar with cookies but I know how they work. I've seen quite a few different tutorials with plain PHP code but I'm looking for a solid example of how to store arrays in a cookie using the symfony syntax:

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

You can't just pass in an array since it expects a string. Is the only way to do it to serialize an array first?

Bir tanımlama veri depolama sırasında başka seçenekler var mı?

3 Cevap

Eğer çerez durumunda dizi saklamak için tek konu kilit / değerler bir dizi dizi dönüştürebilirsiniz:

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

Muhtemelen yerine bir çerez daha, bir oturumda veri depolamak gerekir.

PHP otomatik olarak bu destekler; sadece $_SESSION['key'] verilerinizi yerleştirin ve bu kullanıcı tarafından sayfa yükleri arasında devam edecek.

Sahne arkası, PHP istemci üzerinde bir PHPSESSID çerez ve web sunucusu üzerinde veri aramak için kullanır. Bu çerezlerini kullanarak üzerinde iki ayrı faydaları vardır.

  1. Verileri tahrif edilemez. Çerezler, değiştirilebilir, silinebilir, ve aksi takdirde müşteri tarafından karıştırılmış olabilir. Sen önemli bilgileri saklamak için bunları kullanmak gerekir.
  2. Depolama sınırsızdır.
  3. Session veri depolama için farklı seçenekler vardır. Onlar diskte gitmek, ya da memcache, ya da her neyse içine olabilir.
  4. Sen diziler gibi karmaşık türlerini depolamak, hatta örneklerini itiraz edebilir.

the PHP documentation on sessions daha fazla bilgi için bkz.

Eğer gerçekten bir tanımlama değil, bir oturumda saklamak gerekiyorsa, serileştirme kullanabilirsiniz:

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

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