آموزش HTTP Session در لاراول

معرفی Session ها در لاراول

در حالی که برنامه های کاربردی تحت وب  در بستر ٬ HTTP بی ثبات و نا امن هستند ، sessions راه هایی برای ذخیره اطلاعات در مورد کاربر در چند  روش را فراهم می کند.

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

 

پیکر بندی HTTP Session لاراول

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

به طور پیش فرض، لاراول از file session driver استفاده می کند که با بسیاری پروژه ها هماهنگی بسیار خوبی دارد .

در پروژه های خودتان می توانید از درایور memcached یا redis برای عملکرد حتی بهتر از session استفاده کنید.

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

  • file : تعیین می کند sessions در مسیر storage/framework/sessions ذخیره شوند .
  • cookie : در این روش sessions ها را به صورت امن ذخیره می کند ٬ کوکی های رمز نگاری شده .
  • database : در این روش sessions به صورت دیتابیس ذخیره شده ذخیره می شوند .
  • memcached / redis : در این روش کوکی با سرعت بیشتری ذخیره  می شوند / سیستم کش
  • array : در این روش sessions ها به صورت آرایه ذخیره میشوند و ادامه پیدا نمی کنند .

پیش نیاز های استفاده از  Driver

  Database

برای استفاده  database session driver شما نیاز دارید برای هر کدام از کوکی یک جدول در دیتا بیس ایجاد کنید :

در زیر یک مثال آمده است (migration) :

سپس برای تولید این جداول که session در آن ذخیره می شوند نیاز به یک دستور برای آرتیسان خود دارید : session:table برای مثال :

استفاده از Redis

قبل از استفاده از session Redis با Laravel، شما باید بسته predis/predis را از طریق Composer نصب کنید. شما می توانید فعال/غیرفعال Redis خود را در فایل تظیمات و پیکربندی database پیکربندی کنید.

نحوه استفاده Session ها

گرفتن دیتاها

شما دو راه اصلی برای استفاده از Session در لاراول دارید :

  1. تابع اصلی Session
  2. از طریق Request فوری

آموزش Session از طریق Request فوری

برای استفاده از controller

توجه :‌لطفا همیشه حواستون باشه که تابع مورد نظر use شده باشد .

یک مثال ساده :

حال برای گرفتن Session از متد get استفاده می کنیم ٬ در ارگومان دوم شما value را می توانید تعریف کنید :

مقدار default برای این منظور تعریف شده است که اگر key مشخص شده در   Session نباشد مقدار default را بر میگرداند .

آموزش تابع همگانی Session پی اچ پی

شما همچنین می توانید از طریق تابع سراسری Session  در php لاراول کار کنید .

گرفتن تمام Session Data در یک تابع

برای گرفتن تمام مقادیر Session در یک متغیر باید از تابع all استفاده کنید .

چک کردن اینکه آیا یک آیتم در Session وجود دارد

برای اینکه شما چک کنید آیا یک تابع در Session مقدار آن یک مقدار درست هست یا مقدار خالی باید از تابع has استفاده کنید .

این تابع دو خروجی دارد :

  • اگر تابع از قبل وجود داشته باشد خروجی true بر می گرداند
  • اگر تابع از قبل وجود نداشته باشد خروجی null بر می گرداند

اما اگر بخواهید ببینید اصلا این تابع موجود هست یا نه ٬باید از تابع exists استفاده کنید .

ذخیره سازی دیتا های Session – لاراول

برای ذخیره Session ها در لاراول معمولا از تابع متد put یا تابع سراسری استفاده می شود :

فرستادن Values (مقدار) به آرایه های Session

برای ارسال مقدار ها جدید به آرایه ها ٬ باید از تابع push استفاده کنید . برای مثال برای ارسال کلید user.teams که باید نام تیم را ارسال کند باید اینگونه عمل کنید :

بازیابی و حذف یک آیتم در Session

برای بازیابی و یا حذف یک تابع سراسری در Session ها باید از تابع pull استفاده کنید .

دیتا موقت در Session

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

داده های ذخیره شده در جلسه با استفاده از این روش در طی درخواست HTTP بعدی در دسترس خواهد بود و پس از آن حذف خواهد شد.

دیتا موقت بیشتر برای درخواست های کوتاه مدت استفاده می شود :

اگر شما می  خواهد از درخواست موقت برای چند درخواست (requests)  استفاده کنید می توانید از تابع reflash . که تمام دیتا های موقت را برای چند دستور اضافی مگه می دارد .

اگر نیاز به یکسری Session موقت خاص و منتخب دارید  می توانید از تابع keep استفاده کنید :

بازسازی Session ID

بازسازی Session ID غالبا برای این استفاده می شود که از کاربران مخربی که قصد دارند از طریق session fixation attack قصد دارند که خللی در کار سایت ایجاد کنند .

Laravel به طور خودکار شناسه جلسه را در هنگام احراز هویت بازسازی می کند، اگر از ورودی ساخته شده از تابع regenerate استفاده می کنید؛ با این حال، اگر شما نیاز به دستی بازسازی ID جلسه، شما ممکن است از روش regenerate استفاده کنید.

 

درباره نویسنده

شمشاد امیری خراسانی

بنیان گذار گروه توسعه وب آریا پاد - توسعه دهنده PHP - لاراول و وردپرس

پست های مرتبط

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *