Հոդվածներ

Ինչ են նիստերը Laravel-ում, կազմաձևում և օգտագործում օրինակներով

Laravel նիստերը թույլ են տալիս Ձեզ պահել տեղեկատվությունը և փոխանակել այն ձեր վեբ հավելվածի հարցումների միջև: 

Դրանք ընթացիկ օգտագործողի համար տվյալների պահպանման հեշտ միջոց են: Այս ձեռնարկը ձեզ կտրամադրի Laravel-ում նիստերի հետ աշխատելու հիմունքները:

Ինչ է Laravel նիստը

Laravel-ում նիստը տեղեկատվություն պահելու, օգտատիրոջ կողմից ներկայացված հարցումները ճիշտ մշակելու միջոց է: Երբ օգտատերը սկսում է Laravel հավելվածը, այդ օգտատիրոջ համար սեսիան ավտոմատ կերպով սկսվում է: Աշխատաշրջանի տվյալները պահվում են սերվերում, և եզակի նույնացուցիչով փոքրիկ թխուկ է ուղարկվում օգտատիրոջ զննարկիչին՝ նիստը նույնականացնելու համար:

Դուք կարող եք օգտագործել նստաշրջանը տվյալների պահպանման համար, որոնք ցանկանում եք օգտագործել բազմաթիվ էջերում կամ հարցումներում: Օրինակ, դուք կարող եք օգտագործել նիստը օգտատերերի նույնականացման համար կամ պահել այլ տեղեկություններ, որոնք ցանկանում եք օգտագործել նիստի ընթացքում ձեր հավելվածում:

Աշխատաշրջանի կազմաձևումը Laravel-ում

Laravel-ում նիստերն օգտագործելու համար նախ պետք է դրանք միացնեք ֆայլում config/session.php կոնֆիգուրացիայի: Այս ֆայլում հնարավոր է սահմանել սեսիաների հետ կապված կոնֆիգուրացիայի պարամետրեր։ Օրինակ՝ նստաշրջանի տեւողությունը, սեսիայի տվյալները պահելու համար օգտագործվող դրայվերը եւ նստաշրջանի տվյալների պահպանման վայրը: 

Ֆայլն ունի հետևյալ կազմաձևման ընտրանքները.
  • վարորդՆշում է նախնական նստաշրջանի դրայվերըdefiպատրաստ է օգտագործման. Laravel-ն աջակցում է մի քանի սեսիայի դրայվերների՝ ֆայլ, թխուկ, տվյալների բազա, apc, memcached, redis, dynamodb և զանգված;
  • կյանքի տեւողությունՆշում է րոպեների քանակը, որոնց ընթացքում նիստը պետք է վավեր համարվի.
  • expire_on_closeԵթե ​​սահմանված է «true», ապա նիստի ժամկետը կավարտվի, երբ օգտագործողի զննարկիչը փակվի.
  • encryptճշմարիտ նշանակում է, որ շրջանակը կգաղտնագրի նստաշրջանի տվյալները նախքան դրանք պահվելը.
  • ՖայլերԵթե ​​օգտագործվում է ֆայլի նստաշրջանի դրայվերը, այս տարբերակը նշում է ֆայլի պահպանման վայրը.
  • կապԵթե ​​օգտագործվում է տվյալների բազայի նստաշրջանի դրայվերը, այս ընտրանքը սահմանում է տվյալների բազայի միացումը, որը պետք է օգտագործել.
  • սեղանԵթե ​​օգտագործվում է տվյալների բազայի նիստի դրայվերը, այս տարբերակը սահմանում է տվյալների բազայի աղյուսակը, որն օգտագործվում է նիստի տվյալները պահելու համար.
  • վիճակախաղԱրժեքների զանգված, որն օգտագործվում է պատահականորեն ընտրելու նիստի ID քուքի արժեքը.
  • բուլկիԱյս ընտրանքը սահմանում է թխուկի անունը, որը կօգտագործվի նիստի ID-ն պահելու համար: Ճանապարհ, տիրույթ, անվտանգ, http_only և same_site ընտրանքներն օգտագործվում են նիստի համար թխուկների կարգավորումները կարգավորելու համար:

Ստորև բերված է ֆայլի օրինակ sessions.php նիստի տեւողությամբ 120 վայրկյան, գրացուցակում պահվող ֆայլերի օգտագործում 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',

];

Դուք կարող եք նաև կարգավորել նիստը, օգտագործելով ֆայլի միջավայրի փոփոխականները .env. Օրինակ՝ տվյալների բազայի նստաշրջանի դրայվերն օգտագործելու և նստաշրջանի տվյալները սեսիայի աղյուսակում պահելու համար MySQL տիպի DB-ով կարող եք սահմանել հետևյալ միջավայրի փոփոխականները.

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

Laravel նստաշրջանի կարգավորում

Laravel-ում նստաշրջանի տվյալների հետ աշխատելու երեք եղանակ կա. 

  • օգտագործելովhelper - ից global session;
  • օգտագործելով Session ճակատը;
  • միջոցով ա Request instance

Այս բոլոր դեպքերում, տվյալները, որոնք դուք պահում եք նիստում, հասանելի կլինեն նույն օգտատիրոջ կողմից արված հետագա հարցումներում, մինչև նիստի ժամկետի ավարտը կամ ձեռքով չոչնչացվի:

Նորարարության տեղեկագիր
Բաց մի թողեք նորարարության մասին ամենակարևոր նորությունները: Գրանցվեք դրանք էլփոստով ստանալու համար:

Համաշխարհային նստաշրջանի օգնական

Laravel-ում՝ օգտագործելով ֆունկցիան Global Session Helper դա հարթակի կողմից տրամադրվող սեսիա ծառայություններին մուտք գործելու հարմար միջոց է: Այն թույլ է տալիս պահպանել և առբերել տվյալներ նիստից ձեր հավելվածում: Ահա մի օրինակ, թե ինչպես օգտագործել 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();

Կարող եք նաև փոխանցել նախնական արժեքdefinite որպես ֆունկցիայի երկրորդ արգումենտ session, որը կվերադարձվի, եթե նշված բանալին չգտնվի նիստում.

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

Օրինակ Session Request

Laravel-ում նստաշրջանի հարցման օրինակը վերաբերում է օբյեկտին, որը ներկայացնում է HTTP հարցումը և պարունակում է տեղեկություններ հարցման մասին, ինչպիսիք են հարցման մեթոդը (GET, POST, PUT և այլն), հարցման URL-ը, հարցման վերնագրերը և հարցման մարմինը: . Այն նաև պարունակում է տարբեր մեթոդներ, որոնք կարող են օգտագործվել այս տեղեկատվությունը առբերելու և շահարկելու համար:

Սովորաբար դուք մուտք եք գործում ի օրինակ Session Request փոփոխականի միջոցով $request Laravel հավելվածում: Օրինակ, նիստին կարելի է մուտք գործել հարցման օրինակի միջոցով՝ օգտագործելով օգնական ֆունկցիան 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');
    }
}

Այս օրինակում փոփոխականը  $request դա դասի օրինակ է Illuminate\Http\Request, որը ներկայացնում է ընթացիկ HTTP հարցումը: Գործառույթը session Հարցման օրինակը վերադարձնում է դասի օրինակը Illuminate\Session\Store, որն ապահովում է նիստի հետ աշխատելու տարբեր գործառույթներ։

Ercole Palmeri

Նորարարության տեղեկագիր
Բաց մի թողեք նորարարության մասին ամենակարևոր նորությունները: Գրանցվեք դրանք էլփոստով ստանալու համար:

Վերջին հոդվածները

Veeam-ն ունի ամենաընդգրկուն աջակցություն փրկագինին՝ պաշտպանությունից մինչև պատասխան և վերականգնում

Veeam-ի Coveware-ը կշարունակի տրամադրել կիբեր շորթման միջադեպերի արձագանքման ծառայություններ: Coveware-ը կառաջարկի դատաբժշկական և վերականգնման հնարավորություններ…

23 Ապրիլ 2024

Կանաչ և թվային հեղափոխություն. Ինչպես է կանխատեսելի սպասարկումը փոխակերպում նավթի և գազի արդյունաբերությունը

Կանխատեսելի սպասարկումը հեղափոխություն է անում նավթի և գազի ոլորտում՝ կայանի կառավարման նորարարական և ակտիվ մոտեցմամբ:…

22 Ապրիլ 2024

Մեծ Բրիտանիայի հակամենաշնորհային կարգավորիչը բարձրացնում է BigTech-ի ահազանգը GenAI-ի վերաբերյալ

Մեծ Բրիտանիայի CMA-ն նախազգուշացում է տարածել արհեստական ​​ինտելեկտի շուկայում Big Tech-ի վարքագծի վերաբերյալ: Այնտեղ…

18 Ապրիլ 2024

Casa Green. էներգետիկ հեղափոխություն կայուն ապագայի համար Իտալիայում

Շենքերի էներգաարդյունավետության բարձրացման նպատակով Եվրոպական միության կողմից ձևակերպված «Քեյս Գրին» հրամանագիրը իր օրենսդրական գործընթացն ավարտել է…

18 Ապրիլ 2024

Կարդացեք նորարարությունը ձեր լեզվով

Նորարարության տեղեկագիր
Բաց մի թողեք նորարարության մասին ամենակարևոր նորությունները: Գրանցվեք դրանք էլփոստով ստանալու համար:

Հետեւեք մեզ