Cara memeriksa sesi di php

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

Laravel dikirimkan dengan berbagai backend sesi yang diakses melalui API terpadu yang ekspresif. Dukungan untuk backend populer seperti Memcached, Redis, dan database disertakan

Konfigurasi

File konfigurasi sesi aplikasi Anda disimpan di

$value = $request->session()->get('key', 'default');

$value = $request->session()->get('key', function () {

2. Pastikan untuk meninjau opsi yang tersedia untuk Anda dalam file ini. Secara default, Laravel dikonfigurasi untuk menggunakan driver sesi

$value = $request->session()->get('key', 'default');

$value = $request->session()->get('key', function () {

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 database

Opsi konfigurasi sesi

$value = $request->session()->get('key', 'default');

$value = $request->session()->get('key', function () {

4 menentukan di mana data sesi akan disimpan untuk setiap permintaan. Laravel dikirimkan dengan beberapa driver hebat di luar kotak

  • $value = $request->session()->get('key', 'default');

    $value = $request->session()->get('key', function () {

    3 - sesi disimpan di

    $value = $request->session()->get('key', 'default');

    $value = $request->session()->get('key', function () {

    6
  • $value = $request->session()->get('key', 'default');

    $value = $request->session()->get('key', function () {

    7 - sesi disimpan dalam cookie terenkripsi yang aman
  • $value = $request->session()->get('key', 'default');

    $value = $request->session()->get('key', function () {

    8 - sesi disimpan dalam database relasional
  • $value = $request->session()->get('key', 'default');

    $value = $request->session()->get('key', function () {

    _9 /

    Route::get('/home', function () {

    // Retrieve a piece of data from the session...

    // Specifying a default value...

    $value = session('key', 'default');

    // Store a piece of data in the session...

    session(['key' => 'value']);

    0 - sesi disimpan di salah satu penyimpanan berbasis cache yang cepat ini
  • Route::get('/home', function () {

    // Retrieve a piece of data from the session...

    // Specifying a default value...

    $value = session('key', 'default');

    // Store a piece of data in the session...

    session(['key' => 'value']);

    1 - sesi disimpan di AWS DynamoDB
  • Route::get('/home', function () {

    // Retrieve a piece of data from the session...

    // Specifying a default value...

    $value = session('key', 'default');

    // Store a piece of data in the session...

    session(['key' => 'value']);

    2 - sesi disimpan dalam array PHP dan tidak akan bertahan

Catatan
Driver array terutama digunakan selama pengujian dan mencegah data yang disimpan dalam sesi bertahan

Prasyarat Pengemudi

Basis data

Saat menggunakan driver sesi

$value = $request->session()->get('key', 'default');

$value = $request->session()->get('key', function () {

8, Anda perlu membuat tabel untuk memuat catatan sesi. Contoh deklarasi

Route::get('/home', function () {

// Retrieve a piece of data from the session...

// Specifying a default value...

$value = session('key', 'default');

// Store a piece of data in the session...

session(['key' => 'value']);

_4 untuk tabel dapat ditemukan di bawah

Schema::create('sessions', function ($table) {

$table->string('id')->primary();

$table->foreignId('user_id')->nullable()->index();

$table->string('ip_address', 45)->nullable();

$table->text('user_agent')->nullable();

$table->integer('last_activity')->index();

Anda dapat menggunakan perintah

Route::get('/home', function () {

// Retrieve a piece of data from the session...

// Specifying a default value...

$value = session('key', 'default');

// Store a piece of data in the session...

session(['key' => 'value']);

_5 Artisan untuk membuat migrasi ini. Untuk mempelajari lebih lanjut tentang migrasi database, Anda dapat membaca dokumentasi migrasi lengkap

Redis

Sebelum menggunakan sesi Redis dengan Laravel, Anda harus menginstal ekstensi PhpRedis PHP melalui PECL atau menginstal paket

Route::get('/home', function () {

// Retrieve a piece of data from the session...

// Specifying a default value...

$value = session('key', 'default');

// Store a piece of data in the session...

session(['key' => 'value']);

6 (~1. 0) melalui Komposer. Untuk informasi lebih lanjut tentang mengonfigurasi Redis, konsultasikan dengan Laravel

Catatan
Dalam file konfigurasi

Route::get('/home', function () {

// Retrieve a piece of data from the session...

// Specifying a default value...

$value = session('key', 'default');

// Store a piece of data in the session...

session(['key' => 'value']);

7, opsi

Route::get('/home', function () {

// Retrieve a piece of data from the session...

// Specifying a default value...

$value = session('key', 'default');

// Store a piece of data in the session...

session(['key' => 'value']);

8 dapat digunakan untuk menentukan koneksi Redis mana yang digunakan oleh sesi

Berinteraksi Dengan Sesi

Mengambil Data

Ada dua cara utama untuk bekerja dengan data sesi di Laravel. pembantu global

Route::get('/home', function () {

// Retrieve a piece of data from the session...

// Specifying a default value...

$value = session('key', 'default');

// Store a piece of data in the session...

session(['key' => 'value']);

_7 dan melalui contoh

$data = $request->session()->all();

0. Pertama, mari kita lihat mengakses sesi melalui instance

$data = $request->session()->all();

0, yang dapat diisyaratkan pada penutupan rute atau metode pengontrol. Ingat, dependensi metode pengontrol disuntikkan secara otomatis melalui wadah layanan Laravel

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;

use Illuminate\Http\Request;

class UserController extends Controller

* Show the profile for the given user.

public function show(Request $request, $id)

$value = $request->session()->get('key');

Saat Anda mengambil item dari sesi, Anda juga dapat meneruskan nilai default sebagai argumen kedua ke metode

$data = $request->session()->all();

2. Nilai default ini akan dikembalikan jika kunci yang ditentukan tidak ada di sesi. Jika Anda melewatkan penutupan sebagai nilai default ke metode

$data = $request->session()->all();

2 dan kunci yang diminta tidak ada, penutupan akan dieksekusi dan hasilnya dikembalikan

$value = $request->session()->get('key', 'default');

$value = $request->session()->get('key', function () {

Pembantu Sesi Global

Anda juga dapat menggunakan fungsi global

Route::get('/home', function () {

// Retrieve a piece of data from the session...

// Specifying a default value...

$value = session('key', 'default');

// Store a piece of data in the session...

session(['key' => 'value']);

_7 PHP untuk mengambil dan menyimpan data dalam sesi. Ketika pembantu

Route::get('/home', function () {

// Retrieve a piece of data from the session...

// Specifying a default value...

$value = session('key', 'default');

// Store a piece of data in the session...

session(['key' => 'value']);

_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

Route::get('/home', function () {

// Retrieve a piece of data from the session...

// Specifying a default value...

$value = session('key', 'default');

// Store a piece of data in the session...

session(['key' => 'value']);

_

Catatan
Ada sedikit perbedaan praktis antara menggunakan sesi melalui contoh permintaan HTTP versus menggunakan pembantu global

Route::get('/home', function () {

// Retrieve a piece of data from the session...

// Specifying a default value...

$value = session('key', 'default');

// Store a piece of data in the session...

session(['key' => 'value']);

7. Kedua metode dapat diuji melalui metode

$data = $request->session()->all();

_7 yang tersedia di semua kasus pengujian Anda

Mengambil Semua Data Sesi

Jika Anda ingin mengambil semua data dalam sesi, Anda dapat menggunakan metode

$data = $request->session()->all();

8

$data = $request->session()->all();

Menentukan Jika Suatu Item Ada Dalam Sesi

Untuk menentukan apakah suatu item ada dalam sesi, Anda dapat menggunakan metode

$data = $request->session()->all();

9. Metode

$data = $request->session()->all();

_9 mengembalikan

if ($request->session()->has('users')) {

1 jika item ada dan tidak

if ($request->session()->has('users')) {

2

if ($request->session()->has('users')) {

Untuk menentukan apakah suatu item ada dalam sesi, meskipun nilainya

if ($request->session()->has('users')) {

2, Anda dapat menggunakan metode

if ($request->session()->has('users')) {

4

if ($request->session()->exists('users')) {

Untuk menentukan apakah suatu item tidak ada dalam sesi, Anda dapat menggunakan metode

if ($request->session()->has('users')) {

5. Metode

if ($request->session()->has('users')) {

5 mengembalikan

if ($request->session()->has('users')) {

1 jika item tidak ada

if ($request->session()->missing('users')) {

Menyimpan Data

Untuk menyimpan data dalam sesi, Anda biasanya akan menggunakan metode

if ($request->session()->has('users')) {

8 instance permintaan atau pembantu global

Route::get('/home', function () {

// Retrieve a piece of data from the session...

// Specifying a default value...

$value = session('key', 'default');

// Store a piece of data in the session...

session(['key' => 'value']);

7

// Via a request instance...

$request->session()->put('key', 'value');

// Via the global "session" helper...

session(['key' => 'value']);

Mendorong Ke Nilai Sesi Array

Metode

if ($request->session()->exists('users')) {

_0 dapat digunakan untuk mendorong nilai baru ke nilai sesi yang merupakan larik. Misalnya, jika kunci

if ($request->session()->exists('users')) {

1 berisi larik nama tim, Anda dapat mendorong nilai baru ke larik seperti itu

$request->session()->push('user.teams', 'developers');

Mengambil dan Menghapus Item

Metode

if ($request->session()->exists('users')) {

2 akan mengambil dan menghapus item dari sesi dalam satu pernyataan

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;

use Illuminate\Http\Request;

class UserController extends Controller

* Show the profile for the given user.

public function show(Request $request, $id)

$value = $request->session()->get('key');

0

Menambah dan Mengurangi Nilai Sesi

Jika data sesi Anda berisi bilangan bulat yang ingin Anda tambahkan atau kurangi, Anda dapat menggunakan metode

if ($request->session()->exists('users')) {

3 dan

if ($request->session()->exists('users')) {

4

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;

use Illuminate\Http\Request;

class UserController extends Controller

* Show the profile for the given user.

public function show(Request $request, $id)

$value = $request->session()->get('key');

1

Data Kilat

Terkadang Anda mungkin ingin menyimpan item dalam sesi untuk permintaan berikutnya. Anda dapat melakukannya dengan menggunakan metode

if ($request->session()->exists('users')) {

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

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;

use Illuminate\Http\Request;

class UserController extends Controller

* Show the profile for the given user.

public function show(Request $request, $id)

$value = $request->session()->get('key');

2

Jika Anda perlu mempertahankan data flash untuk beberapa permintaan, Anda dapat menggunakan metode

if ($request->session()->exists('users')) {

6, yang akan menyimpan semua data flash untuk permintaan tambahan. Jika Anda hanya perlu menyimpan data flash tertentu, Anda dapat menggunakan metode

if ($request->session()->exists('users')) {

7

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;

use Illuminate\Http\Request;

class UserController extends Controller

* Show the profile for the given user.

public function show(Request $request, $id)

$value = $request->session()->get('key');

3

Untuk mempertahankan data flash Anda hanya untuk permintaan saat ini, Anda dapat menggunakan metode

if ($request->session()->exists('users')) {

8

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;

use Illuminate\Http\Request;

class UserController extends Controller

* Show the profile for the given user.

public function show(Request $request, $id)

$value = $request->session()->get('key');

4

Menghapus Data

Metode

if ($request->session()->exists('users')) {

_9 akan menghapus sebagian data dari sesi. Jika Anda ingin menghapus semua data dari sesi, Anda dapat menggunakan metode

if ($request->session()->missing('users')) {

0

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;

use Illuminate\Http\Request;

class UserController extends Controller

* Show the profile for the given user.

public function show(Request $request, $id)

$value = $request->session()->get('key');

5

Membuat Ulang ID Sesi

Membuat 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;

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;

use Illuminate\Http\Request;

class UserController extends Controller

* Show the profile for the given user.

public function show(Request $request, $id)

$value = $request->session()->get('key');

6

Jika Anda perlu membuat ulang ID sesi dan menghapus semua data dari sesi dalam satu pernyataan, Anda dapat menggunakan metode

if ($request->session()->missing('users')) {

2

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;

use Illuminate\Http\Request;

class UserController extends Controller

* Show the profile for the given user.

public function show(Request $request, $id)

$value = $request->session()->get('key');

7

Pemblokiran Sesi

Peringatan
Untuk memanfaatkan pemblokiran sesi, aplikasi Anda harus menggunakan driver cache yang mendukung. Saat ini, driver cache tersebut mencakup driver

$value = $request->session()->get('key', 'default');

$value = $request->session()->get('key', function () {

_9,

Route::get('/home', function () {

// Retrieve a piece of data from the session...

// Specifying a default value...

$value = session('key', 'default');

// Store a piece of data in the session...

session(['key' => 'value']);

1,

Route::get('/home', function () {

// Retrieve a piece of data from the session...

// Specifying a default value...

$value = session('key', 'default');

// Store a piece of data in the session...

session(['key' => 'value']);

0, dan

$value = $request->session()->get('key', 'default');

$value = $request->session()->get('key', function () {

8. Selain itu, Anda tidak boleh menggunakan driver sesi

$value = $request->session()->get('key', 'default');

$value = $request->session()->get('key', function () {

7

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

if ($request->session()->missing('users')) {

8 ke definisi rute Anda. Dalam contoh ini, permintaan masuk ke titik akhir

if ($request->session()->missing('users')) {

9 akan memperoleh kunci sesi. Saat kunci ini ditahan, setiap permintaan masuk ke titik akhir

if ($request->session()->missing('users')) {

9 atau

// Via a request instance...

$request->session()->put('key', 'value');

// Via the global "session" helper...

session(['key' => 'value']);

1 yang berbagi ID sesi yang sama akan menunggu permintaan pertama selesai dieksekusi sebelum melanjutkan eksekusinya

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;

use Illuminate\Http\Request;

class UserController extends Controller

* Show the profile for the given user.

public function show(Request $request, $id)

$value = $request->session()->get('key');

8

Metode

if ($request->session()->missing('users')) {

_8 menerima dua argumen opsional. Argumen pertama yang diterima oleh metode

if ($request->session()->missing('users')) {

_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 awal

Argumen kedua yang diterima oleh metode

if ($request->session()->missing('users')) {

_8 adalah jumlah detik permintaan harus menunggu saat mencoba mendapatkan kunci sesi.

// Via a request instance...

$request->session()->put('key', 'value');

// Via the global "session" helper...

session(['key' => 'value']);

_5 akan dilemparkan jika permintaan tidak dapat memperoleh kunci sesi dalam jumlah detik yang diberikan

Jika 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

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;

use Illuminate\Http\Request;

class UserController extends Controller

* Show the profile for the given user.

public function show(Request $request, $id)

$value = $request->session()->get('key');

_9

Menambahkan Driver Sesi Kustom

Menerapkan Driver

Jika 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

// Via a request instance...

$request->session()->put('key', 'value');

// Via the global "session" helper...

session(['key' => 'value']);

6 bawaan PHP. Antarmuka ini hanya berisi beberapa metode sederhana. Implementasi MongoDB yang di-stub terlihat seperti berikut ini

$value = $request->session()->get('key', 'default');

$value = $request->session()->get('key', function () {

0

Catatan
Laravel tidak dikirimkan dengan direktori untuk menampung ekstensi Anda. Anda bebas menempatkannya di mana pun Anda suka. Dalam contoh ini, kami telah membuat direktori

// Via a request instance...

$request->session()->put('key', 'value');

// Via the global "session" helper...

session(['key' => 'value']);

7 untuk menampung

// Via a request instance...

$request->session()->put('key', 'value');

// Via the global "session" helper...

session(['key' => 'value']);

8

Karena tujuan dari metode ini tidak mudah dipahami, mari kita bahas dengan cepat apa yang dilakukan masing-masing metode

  • Metode

    // Via a request instance...

    $request->session()->put('key', 'value');

    // Via the global "session" helper...

    session(['key' => 'value']);

    _9 biasanya akan digunakan dalam sistem penyimpanan sesi berbasis file. Karena Laravel dikirimkan dengan driver sesi

    $value = $request->session()->get('key', 'default');

    $value = $request->session()->get('key', function () {

    _3, Anda jarang perlu memasukkan apa pun ke dalam metode ini. Anda cukup membiarkan metode ini kosong
  • Metode

    $request->session()->push('user.teams', 'developers');

    _1, seperti metode

    // Via a request instance...

    $request->session()->put('key', 'value');

    // Via the global "session" helper...

    session(['key' => 'value']);

    9, biasanya juga dapat diabaikan. Untuk sebagian besar driver, itu tidak diperlukan
  • Metode

    $request->session()->push('user.teams', 'developers');

    _3 harus mengembalikan versi string dari data sesi yang terkait dengan

    $request->session()->push('user.teams', 'developers');

    4 yang diberikan. Tidak perlu melakukan serialisasi atau pengkodean lainnya saat mengambil atau menyimpan data sesi di driver Anda, karena Laravel akan melakukan serialisasi untuk Anda
  • Metode

    $request->session()->push('user.teams', 'developers');

    _5 harus menulis string

    $request->session()->push('user.teams', 'developers');

    6 yang diberikan terkait dengan

    $request->session()->push('user.teams', 'developers');

    4 ke beberapa sistem penyimpanan persisten, seperti MongoDB atau sistem penyimpanan lain pilihan Anda. Sekali lagi, Anda tidak boleh melakukan serialisasi apa pun - Laravel sudah menanganinya untuk Anda
  • Metode

    $request->session()->push('user.teams', 'developers');

    _8 harus menghapus data yang terkait dengan

    $request->session()->push('user.teams', 'developers');

    4 dari penyimpanan persisten
  • Metode

    namespace App\Http\Controllers;

    use App\Http\Controllers\Controller;

    use Illuminate\Http\Request;

    class UserController extends Controller

    * Show the profile for the given user.

    public function show(Request $request, $id)

    $value = $request->session()->get('key');

    _00 harus menghancurkan semua data sesi yang lebih tua dari

    namespace App\Http\Controllers;

    use App\Http\Controllers\Controller;

    use Illuminate\Http\Request;

    class UserController extends Controller

    * Show the profile for the given user.

    public function show(Request $request, $id)

    $value = $request->session()->get('key');

    01 yang diberikan, yang merupakan stempel waktu UNIX. Untuk sistem yang kedaluwarsa sendiri seperti Memcached dan Redis, metode ini mungkin dibiarkan kosong

Mendaftarkan Pengemudi

Setelah driver Anda diimplementasikan, Anda siap untuk mendaftarkannya ke Laravel. Untuk menambahkan driver tambahan ke backend sesi Laravel, Anda dapat menggunakan metode

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;

use Illuminate\Http\Request;

class UserController extends Controller

* Show the profile for the given user.

public function show(Request $request, $id)

$value = $request->session()->get('key');

02 yang disediakan oleh fasad

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;

use Illuminate\Http\Request;

class UserController extends Controller

* Show the profile for the given user.

public function show(Request $request, $id)

$value = $request->session()->get('key');

03. Anda harus memanggil metode

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;

use Illuminate\Http\Request;

class UserController extends Controller

* Show the profile for the given user.

public function show(Request $request, $id)

$value = $request->session()->get('key');

_02 dari metode

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;

use Illuminate\Http\Request;

class UserController extends Controller

* Show the profile for the given user.

public function show(Request $request, $id)

$value = $request->session()->get('key');

05 penyedia layanan. Anda dapat melakukan ini dari

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;

use Illuminate\Http\Request;

class UserController extends Controller

* Show the profile for the given user.

public function show(Request $request, $id)

$value = $request->session()->get('key');

_06 yang ada atau membuat penyedia yang sama sekali baru

$value = $request->session()->get('key', 'default');

$value = $request->session()->get('key', function () {

_1

Setelah driver sesi didaftarkan, Anda dapat menggunakan driver

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;

use Illuminate\Http\Request;

class UserController extends Controller

* Show the profile for the given user.

public function show(Request $request, $id)

$value = $request->session()->get('key');

07 di file konfigurasi

$value = $request->session()->get('key', 'default');

$value = $request->session()->get('key', function () {

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 .