نسخه:

جلسه

پیکربندی

از آنجایی که برنامه‌های مبتنی بر HTTP بدون حالت هستند، جلسات راهی برای ذخیره اطلاعات کاربر در بین درخواست‌ها فراهم می‌کند. لاراول با انواع بک‌اندهای جلسه برای استفاده از طریق یک API تمیز و یکپارچه عرضه می‌شود. پشتیبانی از بک‌اندهای محبوب مانند Memcached ، Redis ، و پایگاه‌های داده خارج از جعبه گنجانده شده است.

پیکربندی جلسه در ذخیره می شود config/session.php . حتماً گزینه های مستندی که در این فایل در دسترس شماست را مرور کنید. به طور پیش فرض، لاراول برای استفاده از file درایور جلسه پیکربندی شده است که برای اکثر برنامه ها به خوبی کار می کند.

قبل از استفاده از جلسات Redis با لاراول، باید predis/predis بسته (~1.0) را از طریق Composer نصب کنید.

توجه: اگر به رمزگذاری تمام داده های جلسه ذخیره شده نیاز دارید، encrypt گزینه پیکربندی را روی true .

توجه: هنگام استفاده از درایور جلسه، هرگز cookie نباید میان افزار را از هسته HTTP خود حذف کنید . اگر این میان افزار را حذف کنید، برنامه شما در برابر تزریق کد از راه دور آسیب پذیر خواهد بود. EncryptCookie

کلیدهای رزرو شده

فریم ورک لاراول از flash کلید نشست به صورت داخلی استفاده می کند، بنابراین شما نباید آیتمی را با آن نام به جلسه اضافه کنید.

استفاده از جلسه

جلسه ممکن است به روش های مختلفی از طریق session روش درخواست HTTP، Session نما یا session تابع کمکی قابل دسترسی باشد. هنگامی که session helper بدون آرگومان فراخوانی می شود، کل شی جلسه را برمی گرداند. مثلا:

session()->regenerate();

ذخیره یک آیتم در جلسه

Session::put('key', 'value');
 
session(['key' => 'value']);

یک مقدار را روی مقدار جلسه آرایه فشار دهید

Session::push('user.teams', 'developers');

بازیابی یک آیتم از جلسه

$value = Session::get('key');
 
$value = session('key');

بازیابی یک مورد یا برگرداندن یک مقدار پیش فرض

$value = Session::get('key', 'default');
 
$value = Session::get('key', function() { return 'default'; });

بازیابی یک آیتم و فراموش کردن آن

$value = Session::pull('key', 'default');

بازیابی همه داده ها از جلسه

$data = Session::all();

تعیین اینکه آیا یک مورد در جلسه وجود دارد یا خیر

if (Session::has('users'))
{
//
}

حذف یک مورد از جلسه

Session::forget('key');

حذف همه موارد از جلسه

Session::flush();

بازسازی Session ID

Session::regenerate();

داده های فلش

گاهی اوقات ممکن است بخواهید موارد را فقط برای درخواست بعدی در جلسه ذخیره کنید. می توانید این کار را با استفاده از Session::flash روش زیر انجام دهید:

Session::flash('key', 'value');

فلش کردن داده های فعلی فلش برای یک درخواست دیگر

Session::reflash();

فقط زیرمجموعه ای از داده های فلش را دوباره فلش می کند

Session::keep(['username', 'email']);

جلسات پایگاه داده

هنگام استفاده از database درایور جلسه، باید جدولی را تنظیم کنید که حاوی موارد جلسه باشد. در زیر یک مثال Schema برای جدول آمده است:

Schema::create('sessions', function($table)
{
$table->string('id')->unique();
$table->text('payload');
$table->integer('last_activity');
});

البته ممکن است از session:table دستور Artisan برای ایجاد این مهاجرت برای شما استفاده کنید!

php artisan session:table
 
composer dump-autoload
 
php artisan migrate

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

جلسه "درایور" تعیین می کند که داده های جلسه برای هر درخواست کجا ذخیره شوند. لاراول با چندین راننده بزرگ خارج از جعبه ارسال می شود:

  • file - جلسات در ذخیره می شود storage/framework/sessions .
  • cookie - جلسات در کوکی های امن و رمزگذاری شده ذخیره می شوند.
  • database - جلسات در پایگاه داده ای که برنامه شما استفاده می کند ذخیره می شود.
  • memcached / redis - جلسات در یکی از این فروشگاه های سریع و مبتنی بر حافظه پنهان ذخیره می شود.
  • array - جلسات در یک آرایه ساده PHP ذخیره می شوند و در بین درخواست ها باقی نمی مانند.

توجه: درایور آرایه معمولاً برای اجرای آزمایش‌های واحد استفاده می‌شود ، بنابراین هیچ داده جلسه‌ای باقی نمی‌ماند.