12 أساسيات Laravel 11: الجلسات

Anis MarrouchiAI Bot
بواسطة Anis Marrouchi & AI Bot ·

جاري تحميل مشغل تحويل النص إلى كلام الصوتي...

بما أن التطبيقات المدفوعة بـ HTTP عديمة الحالة، توفر الجلسات طريقة لتخزين معلومات حول المستخدم عبر طلبات متعددة. يغطي هذا الدرس أساسيات إدارة الجلسات في Laravel 11.

التكوين

يتم تخزين ملف تكوين جلسات تطبيقك في config/session.php. بشكل افتراضي، يستخدم Laravel محرك جلسات قاعدة البيانات. يحدد خيار تكوين محرك الجلسات مكان تخزين بيانات الجلسة لكل طلب. يتضمن Laravel عدة محركات:

  • file: يتم تخزين الجلسات في storage/framework/sessions.
  • cookie: يتم تخزين الجلسات في ملفات تعريف ارتباط آمنة ومشفرة.
  • database: يتم تخزين الجلسات في قاعدة بيانات علائقية.
  • memcached / redis: يتم تخزين الجلسات في أحد هذه المخازن السريعة القائمة على التخزين المؤقت.
  • dynamodb: يتم تخزين الجلسات في AWS DynamoDB.
  • array: يتم تخزين الجلسات في مصفوفة PHP ولن تستمر. يستخدم هذا المحرك بشكل أساسي أثناء الاختبار.

متطلبات المحرك المسبقة

قاعدة البيانات

عند استخدام محرك جلسات قاعدة البيانات، تحتاج إلى جدول قاعدة بيانات لاحتواء بيانات الجلسة. إذا لم يكن لديك جدول جلسات، استخدم أمر Artisan make:session-table لإنشاء هذا الترحيل:

php artisan make:session-table
php artisan migrate

Redis

قبل استخدام جلسات Redis، قم بتثبيت إضافة PHP PhpRedis عبر PECL أو حزمة predis/predis عبر Composer. لمزيد من المعلومات، راجع توثيق Redis الخاص بـ Laravel.

التفاعل مع الجلسة

استرداد البيانات

هناك طريقتان رئيسيتان للعمل مع بيانات الجلسة في Laravel: مساعد session العام وعبر مثيل Request.

// استخدام مثيل Request
session()->get('key');
 
// استخدام مساعد session العام
$value = session('key');
$value = session('key', 'default');
session(['key' => 'value']);

استرداد جميع بيانات الجلسة

استخدم طريقة all لاسترداد جميع بيانات الجلسة:

$data = $request->session()->all();

استرداد جزء من بيانات الجلسة

استخدم طريقتي only و except لاسترداد مجموعة فرعية من بيانات الجلسة:

$data = $request->session()->only(['username', 'email']);
$data = $request->session()->except(['username', 'email']);

تحديد ما إذا كان عنصر موجوداً في الجلسة

استخدم طرق has و exists و missing للتحقق مما إذا كان عنصر موجوداً في الجلسة:

if ($request->session()->has('users')) {
  // ...
}
if ($request->session()->exists('users')) {
  // ...
}
if ($request->session()->missing('users')) {
  // ...
}

تخزين البيانات

استخدم طريقة put أو مساعد session العام لتخزين البيانات في الجلسة:

$request->session()->put('key', 'value');
session(['key' => 'value']);

الدفع إلى قيم مصفوفة الجلسة

استخدم طريقة push لإضافة قيمة جديدة إلى قيمة مصفوفة الجلسة:

$request->session()->push('user.teams', 'developers');

استرداد وحذف عنصر

استخدم طريقة pull لاسترداد وحذف عنصر من الجلسة في عبارة واحدة:

$value = $request->session()->pull('key', 'default');

زيادة ونقصان قيم الجلسة

استخدم طريقتي increment و decrement لبيانات الجلسة التي تحتوي على أعداد صحيحة:

$request->session()->increment('count');
$request->session()->decrement('count');

بيانات Flash

استخدم طريقة flash لتخزين العناصر في الجلسة للطلب التالي:

$request->session()->flash('status', 'تمت المهمة بنجاح!');
$request->session()->reflash();
$request->session()->keep(['username', 'email']);

حذف البيانات

استخدم طريقة forget لإزالة جزء من البيانات من الجلسة أو طريقة flush لإزالة جميع البيانات:

$request->session()->forget('name');
$request->session()->forget(['name', 'status']);
$request->session()->flush();

إعادة إنشاء معرف الجلسة

استخدم طريقة regenerate لإعادة إنشاء معرف الجلسة:

$request->session()->regenerate();

حجب الجلسة

للاستفادة من حجب الجلسة، يجب أن يستخدم تطبيقك محرك تخزين مؤقت يدعم الأقفال الذرية. استخدم طريقة block للحد من الطلبات المتزامنة لجلسة معينة:

Route::post('/profile', function () {
  // ...
})->block($lockSeconds = 10, $waitSeconds = 10);

إضافة محركات جلسات مخصصة

تنفيذ المحرك

إذا لم تناسب محركات الجلسات الموجودة احتياجات تطبيقك، يجعل Laravel من الممكن كتابة معالج جلسات خاص بك. يجب أن ينفذ محرك الجلسات المخصص واجهة SessionHandlerInterface المدمجة في PHP.

لمزيد من المعلومات التفصيلية، راجع توثيق الجلسات الرسمي في Laravel.

تعرف على المزيد حول إدارة الجلسات في Laravel 11 وعزز تجربة المستخدم في تطبيقك. راجع التوثيق الرسمي لمزيد من الأمثلة والاستخدام المتقدم.


هل تريد قراءة المزيد من الدروس التعليمية؟ تحقق من أحدث درس تعليمي لدينا على تنسيق الوكلاء: الروتينات والتسليمات.

ناقش مشروعك معنا

نحن هنا للمساعدة في احتياجات تطوير الويب الخاصة بك. حدد موعدًا لمناقشة مشروعك وكيف يمكننا مساعدتك.

دعنا نجد أفضل الحلول لاحتياجاتك.

مقالات ذات صلة

10 أساسيات Laravel 11: تجميع الأصول

تعلم أساسيات تجميع الأصول في Laravel 11 باستخدام Vite، بما في ذلك التثبيت والتكوين والأمثلة العملية لتطوير الويب.

10 د قراءة·

9 أساسيات Laravel 11: قوالب Blade

تعلم أساسيات قوالب Blade في Laravel 11، مع التركيز على الميزات الرئيسية والأمثلة العملية لتعزيز مهاراتك في تطوير الويب.

10 د قراءة·