مقالات

Session ها در لاراول چیست، پیکربندی و استفاده با مثال

جلسات لاراول به شما این امکان را می دهد که اطلاعات را ذخیره کرده و بین درخواست ها در برنامه وب خود تبادل کنید. 

آنها یک راه آسان برای حفظ داده ها برای کاربر فعلی هستند. این آموزش اصول کار با جلسات در لاراول را در اختیار شما قرار می دهد.

جلسه لاراول چیست؟

در لاراول، یک جلسه راهی برای ذخیره اطلاعات، برای رسیدگی صحیح به درخواست های ارسال شده توسط کاربر است. هنگامی که کاربر یک برنامه لاراول را راه اندازی می کند، یک جلسه به طور خودکار برای آن کاربر شروع می شود. داده های جلسه در سرور ذخیره می شود و یک کوکی کوچک با یک شناسه منحصر به فرد برای شناسایی جلسه به مرورگر کاربر ارسال می شود.

می توانید از session برای ذخیره داده هایی که می خواهید در چندین صفحه یا درخواست استفاده کنید استفاده کنید. به عنوان مثال، ممکن است از جلسه برای احراز هویت کاربر استفاده کنید یا اطلاعات دیگری را که می خواهید در طول جلسه استفاده کنید در برنامه خود ذخیره کنید.

پیکربندی جلسه در لاراول

برای استفاده از جلسات در لاراول، ابتدا باید آنها را در فایل فعال کنید config/session.php از پیکربندی در این فایل امکان تنظیم پارامترهای پیکربندی مربوط به جلسات وجود دارد. مانند مدت زمان جلسه، درایور مورد استفاده برای ذخیره داده های جلسه و مکان ذخیره سازی برای داده های جلسه. 

فایل دارای گزینه های پیکربندی زیر است:
  • راننده: درایور قبل از جلسه را مشخص می کندdefiآماده برای استفاده. لاراول از چندین درایور جلسه پشتیبانی می کند: فایل، کوکی، پایگاه داده، apc، memcached، redis، dynamodb و آرایه.
  • عمر: تعداد دقایقی را که جلسه باید معتبر در نظر گرفته شود را مشخص می کند.
  • expire_on_close: اگر روی true تنظیم شود، جلسه با بسته شدن مرورگر کاربر منقضی می شود.
  • رمزگذاری: true به این معنی است که چارچوب داده های جلسه را قبل از ذخیره شدن رمزگذاری می کند.
  • فایل ها: در صورت استفاده از درایور جلسه فایل، این گزینه محل ذخیره فایل را مشخص می کند.
  • ارتباط: اگر از درایور جلسه پایگاه داده استفاده می شود، این گزینه اتصال پایگاه داده مورد استفاده را مشخص می کند.
  • جدول: اگر از درایور نشست پایگاه داده استفاده می شود، این گزینه جدول پایگاه داده را برای ذخیره داده های جلسه مشخص می کند.
  • قرعه کشی: آرایه ای از مقادیر که برای انتخاب تصادفی مقدار کوکی 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. به عنوان مثال، برای استفاده از درایور جلسه پایگاه داده و ذخیره داده های جلسه در یک جدول جلسه، با DB نوع MySQL، می توانید متغیرهای محیطی زیر را تنظیم کنید:

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

راه اندازی جلسه لاراول

سه راه برای کار با داده های جلسه در لاراول وجود دارد: 

  • با استفاده ازhelper از global session;
  • با استفاده از نمای Session;
  • از طریق a Request instance

در تمام این موارد، داده‌هایی که در جلسه ذخیره می‌کنید، در درخواست‌های بعدی که توسط همان کاربر انجام می‌شود، تا زمانی که جلسه منقضی شود یا به صورت دستی از بین برود، در دسترس خواهد بود.

خبرنامه نوآوری
مهم ترین اخبار نوآوری را از دست ندهید. برای دریافت آنها از طریق ایمیل ثبت نام کنید.

راهنمای جلسه جهانی

در لاراول با استفاده از تابع 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

در لاراول، نمونه درخواست جلسه به یک شی اشاره می کند که یک درخواست HTTP را نشان می دهد و حاوی اطلاعاتی در مورد درخواست است، مانند روش درخواست (GET، POST، PUT و غیره)، URL درخواست، هدر درخواست و بدنه درخواست. . همچنین شامل روش های مختلفی است که می توان برای بازیابی و دستکاری این اطلاعات استفاده کرد.

به طور معمول شما به نمونه از Session Request از طریق متغیر $request در برنامه لاراول به عنوان مثال، یک جلسه می تواند از طریق یک نمونه درخواست با استفاده از تابع helper قابل دسترسی باشد 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

خبرنامه نوآوری
مهم ترین اخبار نوآوری را از دست ندهید. برای دریافت آنها از طریق ایمیل ثبت نام کنید.

مقالات اخیر

آینده اینجاست: چگونه صنعت کشتیرانی اقتصاد جهانی را متحول می کند

بخش دریایی یک قدرت واقعی اقتصادی جهانی است که به سمت یک بازار 150 میلیاردی حرکت کرده است.

1 می 2024

ناشران و OpenAI توافق نامه هایی را برای تنظیم جریان اطلاعات پردازش شده توسط هوش مصنوعی امضا می کنند.

دوشنبه گذشته، فایننشال تایمز از قراردادی با OpenAI خبر داد. FT مجوز روزنامه نگاری در سطح جهانی خود را صادر می کند…

آوریل 30 2024

پرداخت های آنلاین: در اینجا نحوه پرداخت خدمات جریانی شما را برای همیشه توضیح می دهد

میلیون‌ها نفر برای خدمات استریم پرداخت می‌کنند و هزینه اشتراک ماهانه می‌پردازند. این عقیده رایج است که شما…

آوریل 29 2024

Veeam دارای جامع ترین پشتیبانی از باج افزار، از محافظت تا پاسخ و بازیابی است

Coveware توسط Veeam به ارائه خدمات پاسخگویی به حوادث اخاذی سایبری ادامه خواهد داد. Coveware قابلیت‌های پزشکی قانونی و اصلاحی را ارائه می‌دهد…

آوریل 23 2024

نوآوری را به زبان خود بخوانید

خبرنامه نوآوری
مهم ترین اخبار نوآوری را از دست ندهید. برای دریافت آنها از طریق ایمیل ثبت نام کنید.

ما را دنبال کنید