Symfony - Cookies dan Manajemen Sesi
Komponen Symfony HttpFoundation menyediakan cookie dan manajemen sesi dengan cara yang berorientasi objek. Cookiemenyediakan penyimpanan data sisi klien dan hanya mendukung sejumlah kecil data. Biasanya, ini 2KB per domain dan tergantung pada browser.Sessionmenyediakan penyimpanan data sisi server dan mendukung sejumlah besar data. Mari kita lihat cara membuat cookie dan sesi di aplikasi web Symfony.
Kue kering
Symfony menyediakan kelas Cookie untuk membuat item cookie. Mari kita buat warna cookie, yang kedaluwarsa dalam 24 jam dengan nilaiblue. Parameter konstruktor kelas cookie adalah sebagai berikut.
- name (type: string) - nama cookie
- nilai (jenis: string) - nilai cookie
- expire (type: integer / string / datetime) - informasi kedaluwarsa
- path (type: string) - jalur server tempat cookie tersedia
- domain (type: string) - alamat domain tempat cookie tersedia
- aman (type: boolean) - apakah cookie perlu dikirim dalam koneksi HTTPS
- httpOnly (type: boolean) - apakah cookie hanya tersedia dalam protokol HTTP
use Symfony\Component\HttpFoundation\Cookie;
$cookie = new Cookie('color', 'green', strtotime('tomorrow'), '/',
'somedomain.com', true, true);
Symfony juga menyediakan opsi pembuatan cookie berbasis string berikut.
$cookie = Cookie::fromString('color = green; expires = Web, 4-May-2017 18:00:00 +0100;
path=/; domain = somedomain.com; secure; httponly');
Sekarang, cookie yang dibuat harus dilampirkan ke header objek respons http sebagai berikut.
$response->headers->setCookie($cookie);
Untuk mendapatkan cookie tersebut, kita dapat menggunakan objek Request sebagai berikut.
$cookie = $request->cookie->get('color');
Sini, request->cookie adalah tipe PropertyBag dan kami dapat memanipulasinya menggunakan metode PropertyBag.
Sidang
Symfony menyediakan kelas Sesi yang mengimplementasikan antarmuka SessionInterface. API sesi penting adalah sebagai berikut,
start - Memulai sesi.
Session $session = new Session();
$session->start();
invalidate - Menghapus semua data sesi dan membuat ulang ID sesi.
set - Menyimpan data dalam sesi menggunakan kunci.
$session->set('key', 'value');
Kita dapat menggunakan data apa pun dalam nilai sesi, berupa bilangan bulat sederhana hingga objek kompleks.
get - Mendapat data dari sesi menggunakan kunci.
$val = $session->get('key');
remove - Menghapus kunci dari sesi.
clear - Menghapus data sesi.
FlashBag
Sesi menyediakan fitur berguna lainnya yang disebut FlashBag. Ini adalah wadah khusus di dalam sesi yang menyimpan data hanya selama pengalihan halaman. Ini berguna dalam pengalihan http. Sebelum dialihkan ke halaman, data dapat disimpan di FlashBag sebagai ganti wadah sesi normal dan data yang disimpan akan tersedia di permintaan berikutnya (halaman yang dialihkan). Kemudian, data akan menjadi tidak valid secara otomatis.
$session->getFlashBag()->add('key', 'value');
$session->getFlashBag()->get('key');