Maqolalar

Laravelda seanslar nima, konfiguratsiya va misollar bilan foydalanish

Laravel seanslari ma'lumotni saqlash va veb-ilovangizdagi so'rovlar o'rtasida almashish imkonini beradi. 

Ular joriy foydalanuvchi uchun ma'lumotlarni saqlab qolishning oson yo'lidir. Ushbu qo'llanma sizga Laravelda seanslar bilan ishlash asoslarini beradi.

Laravel sessiyasi nima

Laravelda seans ma'lumotni saqlash, foydalanuvchi so'rovlarini to'g'ri bajarish usulidir. Agar foydalanuvchi Laravel dasturini ishga tushirsa, u foydalanuvchi uchun avtomatik ravishda seans boshlanadi. Seans ma'lumotlari serverda saqlanadi va seansni aniqlash uchun foydalanuvchi brauzeriga noyob identifikatorga ega kichik cookie fayli yuboriladi.

Bir nechta sahifalar yoki so'rovlar bo'ylab foydalanmoqchi bo'lgan ma'lumotlarni saqlash uchun sessiyadan foydalanishingiz mumkin. Masalan, siz seansdan foydalanuvchi autentifikatsiyasi uchun foydalanishingiz yoki seans davomida foydalanmoqchi bo'lgan boshqa ma'lumotlarni ilovangizda saqlashingiz mumkin.

Laravelda seans konfiguratsiyasi

Laravelda seanslardan foydalanish uchun avval ularni faylda yoqishingiz kerak config/session.php konfiguratsiya. Ushbu faylda seanslar bilan bog'liq konfiguratsiya parametrlarini o'rnatish mumkin. Seansning davomiyligi, seans ma'lumotlarini saqlash uchun foydalaniladigan drayver va seans ma'lumotlarini saqlash joyi kabi. 

Faylda quyidagi konfiguratsiya opsiyalari mavjud:
  • haydovchi: Seansdan oldingi drayverni belgilaydidefifoydalanishga tayyor. Laravel bir nechta seans drayverlarini qo'llab-quvvatlaydi: fayl, cookie, ma'lumotlar bazasi, apc, memcached, redis, dynamodb va massiv;
  • hayot paytida: Sessiya haqiqiy deb hisoblanishi kerak bo'lgan daqiqalar sonini belgilaydi;
  • expire_on_close: Agar rost bo'lsa, foydalanuvchi brauzeri yopilganda sessiya tugaydi;
  • shifrlash: rost degani, ramka seans ma'lumotlarini saqlashdan oldin shifrlaydi;
  • fayllar: Agar fayl seansi drayveri ishlatilsa, bu parametr faylni saqlash joyini belgilaydi;
  • aloqa: Agar ma'lumotlar bazasi seansi drayveri ishlatilsa, ushbu parametr foydalanish uchun ma'lumotlar bazasi ulanishini belgilaydi;
  • stol: Agar ma'lumotlar bazasi seansi drayveri ishlatilsa, bu parametr seans ma'lumotlarini saqlash uchun foydalaniladigan ma'lumotlar bazasi jadvalini belgilaydi;
  • lotereya: seans identifikatori cookie qiymatini tasodifiy tanlash uchun foydalaniladigan qiymatlar massivi;
  • cookie: Bu parametr seans identifikatorini saqlash uchun ishlatiladigan cookie faylining nomini belgilaydi. Seans uchun cookie sozlamalarini sozlash uchun yo'l, domen, xavfsiz, http_only va same_site opsiyalaridan foydalaniladi.

Quyida faylga misol keltirilgan sessions.php seans davomiyligi 120 soniya, katalogda saqlangan fayllardan foydalanish framework/sessions:

<?php

use Illuminate\Support\Str;

return [
    'driver' => env('SESSION_DRIVER', 'file'),
    'lifetime' => env('SESSION_LIFETIME', 120),
    'expire_on_close' => false,
    'encrypt' => false,
    'files' => storage_path('framework/sessions'),
    'connection' => env('SESSION_CONNECTION', null),
    'table' => 'sessions',
    'store' => env('SESSION_STORE', null),
    'lottery' => [2, 100],
    'cookie' => env(
        'SESSION_COOKIE',
        Str::slug(env('APP_NAME', 'laravel'), '_').'_session'
    ),
    'path' => '/',
    'domain' => env('SESSION_DOMAIN', null),
    'secure' => env('SESSION_SECURE_COOKIE'),
    'http_only' => true,

    'same_site' => 'lax',

];

Shuningdek, fayldagi muhit o'zgaruvchilari yordamida seansni sozlashingiz mumkin .env. Misol uchun, MySQL tipidagi ma'lumotlar bazasi bilan ma'lumotlar bazasi seansi drayverini ishlatish va seans ma'lumotlarini seans jadvalida saqlash uchun siz quyidagi muhit o'zgaruvchilarini o'rnatishingiz mumkin:

SESSION_DRIVER=database
SESSION_LIFETIME=120
SESSION_CONNECTION=mysql
SESSION_TABLE=sessions

Laravel seansini sozlash

Laravelda sessiya ma'lumotlari bilan ishlashning uchta usuli mavjud: 

  • yordamidahelper della global session;
  • Session fasadidan foydalanish;
  • orqali a Request instance

Ushbu barcha holatlarda, sessiyada saqlagan ma'lumotlaringiz seans tugaguncha yoki qo'lda yo'q qilinmaguncha, xuddi shu foydalanuvchi tomonidan keyingi so'rovlarda mavjud bo'ladi.

Innovatsion axborot byulleteni
Innovatsiyalar haqidagi eng muhim yangiliklarni o'tkazib yubormang. Ularni elektron pochta orqali olish uchun ro'yxatdan o'ting.

Global sessiya yordamchisi

Laravelda funksiyadan foydalanish Global Session Helper bu ramka tomonidan taqdim etilgan sessiya xizmatlariga kirishning qulay usuli. Bu sizning ilovangizdagi sessiya ma'lumotlarini saqlash va olish imkonini beradi. Bu erda qanday foydalanishga misol session helper:

// Store data in the session
session(['key' => 'value']);

// Retrieve data from the session
$value = session('key');

// Remove data from the session
session()->forget('key');

// Clearing the Entire Session
session()->flush();

Bundan tashqari, oldingi qiymatni o'tkazishingiz mumkindefinite funksiyaning ikkinchi argumenti sifatida session, agar belgilangan kalit seansda topilmasa, qaytariladi:

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

ning misoli Session Request

Laravel'da sessiya so'rovi namunasi HTTP so'rovini ifodalovchi ob'ektga ishora qiladi va so'rov usuli (GET, POST, PUT va boshqalar), so'rovning URL manzili, so'rov sarlavhalari va so'rov tanasi kabi so'rov haqidagi ma'lumotlarni o'z ichiga oladi. . Shuningdek, u ushbu ma'lumotni olish va boshqarish uchun ishlatilishi mumkin bo'lgan turli usullarni o'z ichiga oladi.

Odatda siz nusxasiga kirasiz Session Request o'zgaruvchi orqali $request Laravel ilovasida. Masalan, seansga yordamchi funksiyadan foydalangan holda so'rov misoli orqali kirish mumkin session().

use Illuminate\Http\Request;

class ExampleController extends Controller
{
   public function example(Request $request)
   {
       // Store data in the session using the put function
       $request->session()->put('key', 'value');

       // Retrieve data from the session using the get function
       $value = $request->session()->get('key');

       // Check if a value exists in the session using the has function:
       if ($request->session()->has('key')) {
           // The key exists in the session.
       }

       // To determine if a value exists in the session, even if its value is null:
       if ($request->session()->exists('users')) {
           // The value exists in the session.
       }

       // Remove data from the session using the forget function
       $request->session()->forget('key');
    }
}

Ushbu misolda o'zgaruvchi  $request bu sinfning namunasidir Illuminate\Http\Request, bu joriy HTTP so'rovini ifodalaydi. Funktsiya session so'rov namunasi sinfning namunasini qaytaradi Illuminate\Session\Store, bu seans bilan ishlash uchun turli funktsiyalarni ta'minlaydi.

Ercole Palmeri

Innovatsion axborot byulleteni
Innovatsiyalar haqidagi eng muhim yangiliklarni o'tkazib yubormang. Ularni elektron pochta orqali olish uchun ro'yxatdan o'ting.

So'nggi maqolalar

Catania poliklinikasida Apple tomoshabin bilan kengaytirilgan haqiqatga innovatsion aralashuv

Kataniya poliklinikasida Apple Vision Pro tijorat ko‘rish vositasi yordamida oftalmoplastika operatsiyasi o‘tkazildi...

3 may 2024

Bolalar uchun sahifalarni bo'yashning afzalliklari - barcha yoshdagilar uchun sehrli dunyo

Rang berish orqali nozik vosita ko'nikmalarini rivojlantirish bolalarni yozish kabi murakkabroq ko'nikmalarga tayyorlaydi. Rang berish uchun…

2 may 2024

Kelajak bu yerda: Yuk tashish sanoati global iqtisodiyotni qanday inqilob qilmoqda

Harbiy dengiz sektori 150 milliardlik bozorga yo'l olgan haqiqiy global iqtisodiy kuchdir...

1 may 2024

Noshirlar va OpenAI sun'iy intellekt tomonidan qayta ishlangan ma'lumotlar oqimini tartibga solish bo'yicha shartnomalar imzolaydilar.

O'tgan dushanba kuni Financial Times OpenAI bilan shartnoma imzolaganini e'lon qildi. FT o'zining jahon darajasidagi jurnalistikasini litsenziyalaydi...

30 Aprel 2024