Те са лесен начин за запазване на данни за текущия потребител. Този урок ще ви даде основите на работа със сесии в Laravel.
В Laravel сесията е начин за съхраняване на информация, за правилно обработване на заявки, направени от потребител. Когато потребител стартира приложение на Laravel, автоматично се стартира сесия за този потребител. Данните за сесията се съхраняват на сървъра и малка бисквитка с уникален идентификатор се изпраща до браузъра на потребителя, за да идентифицира сесията.
Можете да използвате сесия, за да съхранявате данни, които искате да използвате в множество страници или заявки. Например, можете да използвате сесията за удостоверяване на потребител или да съхранявате друга информация, която искате да използвате по време на сесията във вашето приложение.
За да използвате сесии в Laravel, първо трябва да ги активирате във файла config/session.php
на конфигурация. В този файл е възможно да се задават конфигурационни параметри, свързани със сесиите. Например продължителността на сесията, драйверът, който да се използва за съхраняване на данните от сесията, и мястото за съхранение на данните от сесията.
По-долу е даден пример за файл 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:
helper
на global 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
request instance връща екземпляр на класа Illuminate\Session\Store
, който предоставя различни функции за работа със сесията.
Ercole Palmeri
Операция по офталмопластика с помощта на търговския зрител Apple Vision Pro беше извършена в поликлиниката в Катания...
Развитието на фини двигателни умения чрез оцветяване подготвя децата за по-сложни умения като писане. Оцветявам…
Военноморският сектор е истинска световна икономическа сила, която се е насочила към пазар от 150 милиарда...
Миналия понеделник Financial Times обяви сделка с OpenAI. FT лицензира своята журналистика от световна класа...