Членове

Какво представляват сесиите в Laravel, конфигурация и използване с примери

Сесиите на Laravel ви позволяват да съхранявате информация и да я обменяте между заявки във вашето уеб приложение. 

Те са лесен начин за запазване на данни за текущия потребител. Този урок ще ви даде основите на работа със сесии в Laravel.

Какво е Laravel сесия

В Laravel сесията е начин за съхраняване на информация, за правилно обработване на заявки, направени от потребител. Когато потребител стартира приложение на Laravel, автоматично се стартира сесия за този потребител. Данните за сесията се съхраняват на сървъра и малка бисквитка с уникален идентификатор се изпраща до браузъра на потребителя, за да идентифицира сесията.

Можете да използвате сесия, за да съхранявате данни, които искате да използвате в множество страници или заявки. Например, можете да използвате сесията за удостоверяване на потребител или да съхранявате друга информация, която искате да използвате по време на сесията във вашето приложение.

Конфигуриране на сесия в Laravel

За да използвате сесии в Laravel, първо трябва да ги активирате във файла config/session.php на конфигурация. В този файл е възможно да се задават конфигурационни параметри, свързани със сесиите. Например продължителността на сесията, драйверът, който да се използва за съхраняване на данните от сесията, и мястото за съхранение на данните от сесията. 

Файлът има следните опции за конфигурация:
  • шофьор: Указва предсесийния драйверdefiготов за употреба. Laravel поддържа няколко сесийни драйвера: файл, бисквитка, база данни, apc, memcached, redis, dynamodb и масив;
  • цял живот: Указва броя на минутите, в които сесията трябва да се счита за валидна;
  • expire_on_close: Ако е зададено на true, сесията ще изтече, когато браузърът на потребителя бъде затворен;
  • криптиране: true означава, че рамката ще шифрова данните за сесията, преди да бъдат съхранени;
  • файлове: Ако се използва драйверът на файловата сесия, тази опция указва местоположението за съхранение на файлове;
  • връзка: Ако се използва драйверът на сесията на базата данни, тази опция указва връзката с базата данни, която да се използва;
  • маса: Ако се използва драйверът на сесията на базата данни, тази опция указва таблицата на базата данни, която да се използва за съхраняване на данни за сесията;
  • лотария: Масив от стойности, използвани за произволен избор на стойност на бисквитка с идентификатор на сесия;
  • курабийка: Тази опция указва името на бисквитката, която ще се използва за съхраняване на идентификатора на сесията. Опциите path, domain, secure, 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;
  • с помощта на фасадата на сесията;
  • чрез a 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 request instance връща екземпляр на класа Illuminate\Session\Store, който предоставя различни функции за работа със сесията.

Ercole Palmeri

Иновационен бюлетин
Не пропускайте най-важните новини за иновациите. Регистрирайте се, за да ги получавате по имейл.

Последни статии

Иновативна намеса в добавената реалност с Apple Viewer в поликлиниката в Катания

Операция по офталмопластика с помощта на търговския зрител Apple Vision Pro беше извършена в поликлиниката в Катания...

3 май 2024

Предимствата на страниците за оцветяване за деца - свят на магия за всички възрасти

Развитието на фини двигателни умения чрез оцветяване подготвя децата за по-сложни умения като писане. Оцветявам…

2 май 2024

Бъдещето е тук: Как корабната индустрия революционизира глобалната икономика

Военноморският сектор е истинска световна икономическа сила, която се е насочила към пазар от 150 милиарда...

1 май 2024

Издателите и OpenAI подписват споразумения за регулиране на потока от информация, обработвана от изкуствения интелект

Миналия понеделник Financial Times обяви сделка с OpenAI. FT лицензира своята журналистика от световна класа...

30 април 2024

Прочетете Иновация на вашия език

Иновационен бюлетин
Не пропускайте най-важните новини за иновациите. Регистрирайте се, за да ги получавате по имейл.

Следвайте ни