Karena aplikasi berbasis HTTP tidak memiliki kewarganegaraan, sesi menyediakan cara untuk menyimpan informasi tentang pengguna di berbagai permintaan. Informasi pengguna tersebut biasanya ditempatkan di penyimpanan / backend persisten yang dapat diakses dari permintaan selanjutnya Show
Laravel dikirimkan dengan berbagai backend sesi yang diakses melalui API terpadu yang ekspresif. Dukungan untuk backend populer seperti Memcached, Redis, dan database disertakan KonfigurasiFile konfigurasi sesi aplikasi Anda disimpan di 2. Pastikan untuk meninjau opsi yang tersedia untuk Anda dalam file ini. Secara default, Laravel dikonfigurasi untuk menggunakan driver sesi 3, yang akan bekerja dengan baik untuk banyak aplikasi. Jika aplikasi Anda akan dimuat seimbang di beberapa server web, Anda harus memilih penyimpanan terpusat yang dapat diakses semua server, seperti Redis atau databaseOpsi konfigurasi sesi 4 menentukan di mana data sesi akan disimpan untuk setiap permintaan. Laravel dikirimkan dengan beberapa driver hebat di luar kotak
Prasyarat PengemudiBasis dataSaat menggunakan driver sesi 8, Anda perlu membuat tabel untuk memuat catatan sesi. Contoh deklarasi _4 untuk tabel dapat ditemukan di bawah
Anda dapat menggunakan perintah _5 Artisan untuk membuat migrasi ini. Untuk mempelajari lebih lanjut tentang migrasi database, Anda dapat membaca dokumentasi migrasi lengkapRedisSebelum menggunakan sesi Redis dengan Laravel, Anda harus menginstal ekstensi PhpRedis PHP melalui PECL atau menginstal paket 6 (~1. 0) melalui Komposer. Untuk informasi lebih lanjut tentang mengonfigurasi Redis, konsultasikan dengan Laravel
Berinteraksi Dengan SesiMengambil DataAda dua cara utama untuk bekerja dengan data sesi di Laravel. pembantu global _7 dan melalui contoh 0. Pertama, mari kita lihat mengakses sesi melalui instance 0, yang dapat diisyaratkan pada penutupan rute atau metode pengontrol. Ingat, dependensi metode pengontrol disuntikkan secara otomatis melalui wadah layanan Laravel
Saat Anda mengambil item dari sesi, Anda juga dapat meneruskan nilai default sebagai argumen kedua ke metode 2. Nilai default ini akan dikembalikan jika kunci yang ditentukan tidak ada di sesi. Jika Anda melewatkan penutupan sebagai nilai default ke metode 2 dan kunci yang diminta tidak ada, penutupan akan dieksekusi dan hasilnya dikembalikan
Pembantu Sesi GlobalAnda juga dapat menggunakan fungsi global _7 PHP untuk mengambil dan menyimpan data dalam sesi. Ketika pembantu _7 dipanggil dengan argumen string tunggal, itu akan mengembalikan nilai kunci sesi itu. Ketika helper dipanggil dengan array pasangan kunci / nilai, nilai tersebut akan disimpan dalam sesi _
Mengambil Semua Data SesiJika Anda ingin mengambil semua data dalam sesi, Anda dapat menggunakan metode 8
Menentukan Jika Suatu Item Ada Dalam SesiUntuk menentukan apakah suatu item ada dalam sesi, Anda dapat menggunakan metode 9. Metode _9 mengembalikan 1 jika item ada dan tidak 2
Untuk menentukan apakah suatu item ada dalam sesi, meskipun nilainya 2, Anda dapat menggunakan metode 4
Untuk menentukan apakah suatu item tidak ada dalam sesi, Anda dapat menggunakan metode 5. Metode 5 mengembalikan 1 jika item tidak ada
Menyimpan DataUntuk menyimpan data dalam sesi, Anda biasanya akan menggunakan metode 8 instance permintaan atau pembantu global 7
Mendorong Ke Nilai Sesi ArrayMetode _0 dapat digunakan untuk mendorong nilai baru ke nilai sesi yang merupakan larik. Misalnya, jika kunci 1 berisi larik nama tim, Anda dapat mendorong nilai baru ke larik seperti itu
Mengambil dan Menghapus ItemMetode 2 akan mengambil dan menghapus item dari sesi dalam satu pernyataan 0Menambah dan Mengurangi Nilai SesiJika data sesi Anda berisi bilangan bulat yang ingin Anda tambahkan atau kurangi, Anda dapat menggunakan metode 3 dan 4 1Data KilatTerkadang Anda mungkin ingin menyimpan item dalam sesi untuk permintaan berikutnya. Anda dapat melakukannya dengan menggunakan metode 5. Data yang disimpan dalam sesi yang menggunakan metode ini akan segera tersedia dan selama permintaan HTTP berikutnya. Setelah permintaan HTTP berikutnya, data yang di-flash akan dihapus. Data flash terutama berguna untuk pesan status berumur pendek 2Jika Anda perlu mempertahankan data flash untuk beberapa permintaan, Anda dapat menggunakan metode 6, yang akan menyimpan semua data flash untuk permintaan tambahan. Jika Anda hanya perlu menyimpan data flash tertentu, Anda dapat menggunakan metode 7 3Untuk mempertahankan data flash Anda hanya untuk permintaan saat ini, Anda dapat menggunakan metode 8 4Menghapus DataMetode _9 akan menghapus sebagian data dari sesi. Jika Anda ingin menghapus semua data dari sesi, Anda dapat menggunakan metode 0 5Membuat Ulang ID SesiMembuat ulang ID sesi sering kali dilakukan untuk mencegah pengguna jahat mengeksploitasi serangan fiksasi sesi pada aplikasi Anda Laravel secara otomatis membuat ulang ID sesi selama otentikasi jika Anda menggunakan salah satu starter kit aplikasi Laravel atau Laravel Fortify; 6Jika Anda perlu membuat ulang ID sesi dan menghapus semua data dari sesi dalam satu pernyataan, Anda dapat menggunakan metode 2 7Pemblokiran Sesi
Secara default, Laravel mengizinkan permintaan menggunakan sesi yang sama untuk dieksekusi secara bersamaan. Jadi, misalnya, jika Anda menggunakan pustaka HTTP JavaScript untuk membuat dua permintaan HTTP ke aplikasi Anda, keduanya akan dijalankan secara bersamaan. Untuk banyak aplikasi, ini bukan masalah; Untuk mengurangi ini, Laravel menyediakan fungsionalitas yang memungkinkan Anda membatasi permintaan bersamaan untuk sesi tertentu. Untuk memulai, Anda cukup menghubungkan metode 8 ke definisi rute Anda. Dalam contoh ini, permintaan masuk ke titik akhir 9 akan memperoleh kunci sesi. Saat kunci ini ditahan, setiap permintaan masuk ke titik akhir 9 atau 1 yang berbagi ID sesi yang sama akan menunggu permintaan pertama selesai dieksekusi sebelum melanjutkan eksekusinya 8Metode _8 menerima dua argumen opsional. Argumen pertama yang diterima oleh metode _8 adalah jumlah maksimum detik yang harus ditahan oleh kunci sesi sebelum dilepaskan. Tentu saja, jika permintaan selesai dijalankan sebelum waktu ini, kunci akan dilepaskan lebih awalArgumen kedua yang diterima oleh metode _8 adalah jumlah detik permintaan harus menunggu saat mencoba mendapatkan kunci sesi. _5 akan dilemparkan jika permintaan tidak dapat memperoleh kunci sesi dalam jumlah detik yang diberikanJika tidak satu pun dari argumen ini yang diteruskan, kunci akan diperoleh selama maksimal 10 detik dan permintaan akan menunggu maksimal 10 detik saat mencoba mendapatkan kunci _9Menambahkan Driver Sesi KustomMenerapkan DriverJika tidak ada driver sesi yang ada yang sesuai dengan kebutuhan aplikasi Anda, Laravel memungkinkan untuk menulis session handler Anda sendiri. Driver sesi khusus Anda harus menerapkan 6 bawaan PHP. Antarmuka ini hanya berisi beberapa metode sederhana. Implementasi MongoDB yang di-stub terlihat seperti berikut ini 0
Karena tujuan dari metode ini tidak mudah dipahami, mari kita bahas dengan cepat apa yang dilakukan masing-masing metode
Mendaftarkan PengemudiSetelah driver Anda diimplementasikan, Anda siap untuk mendaftarkannya ke Laravel. Untuk menambahkan driver tambahan ke backend sesi Laravel, Anda dapat menggunakan metode 02 yang disediakan oleh fasad 03. Anda harus memanggil metode _02 dari metode 05 penyedia layanan. Anda dapat melakukan ini dari _06 yang ada atau membuat penyedia yang sama sekali baru _1Setelah driver sesi didaftarkan, Anda dapat menggunakan driver 07 di file konfigurasi 2 Anda
Bagaimana cara memeriksa sesi PHP?Anda dapat memeriksa apakah variabel telah disetel dalam sesi pengguna menggunakan fungsi isset() , seperti yang Anda lakukan pada variabel normal. Karena $_SESSION superglobal hanya diinisialisasi setelah session_start() dipanggil, Anda perlu memanggil session_start() sebelum menggunakan isset() pada variabel sesi.
Bagaimana sesi pemeriksaan dimulai di PHP?Jika sesi tidak dimulai, kode di atas akan selalu memulai sesi dalam skrip PHP. . 0 – PHP_SESSION_DISABLED. Sesi saat ini dinonaktifkan 1 – PHP_SESSION_NONE. Sesi diaktifkan, tetapi tidak ada sesi yang dimulai 2 – PHP_SESSION_AKTIF. Sesi diaktifkan dan sesi telah dimulai Bagaimana cara memeriksa apakah ada variabel sesi di PHP?Fungsi isset() memeriksa apakah suatu variabel disetel, yang artinya harus dideklarasikan dan bukan NULL. Fungsi ini mengembalikan nilai true jika variabel ada dan bukan NULL, jika tidak maka akan mengembalikan nilai false.
Apa status sesi di PHP?PHP - session_status() Fungsi
. Fungsi session_status() mengembalikan status sesi saat ini . |