فهرست:

از Session ها برای ذخیره اطلاعات مختلف کاربر و انتقال آن ها بین درخواست های مختلف استفاده می شود. در لاراول مدیریت اصلی Session ها در فایل config/session.php انجام می شود.

دسترسی به داده های Session ها در لاراول

برای دسترسی به مقدار جلسه، ما به یک instance از جلسه نیاز داریم که از طریق درخواست HTTP بصورت زیر در دسترسی است، برای این منظور می توانیم از متد get استفاده کنیم در این متد یک آرگومان برای دریافت مقدار Session مورد نظر دریافت می شود.

[pastacode lang=”php” manual=”%24value%20%3D%20%24request-%3Esession()-%3Eget(‘key’)%3B%0A” message=”” highlight=”” provider=”manual”/]

شما می توانید به جای متد get از متد all برای بدست آوردن تمام داده های Session استفاده کنید.

ذخیره داده های Session ها در لاراول

داده ها را می توان در Session با استفاده از متد put ذخیره کرد. متد put دو آرگومان key و value دارد و بصورت زیر استفاده می شود.

[pastacode lang=”php” manual=”%24request-%3Esession()-%3Eput(‘key’%2C%20’value’)%3B” message=”” highlight=”” provider=”manual”/]

حذف داده های Session در لاراول

برای این منظور از متد forget برای حذف یک Session استفاده می شود. این متد “key” را به عنوان آرگومان دریافت می کند.

[pastacode lang=”php” manual=”%24request-%3Esession()-%3Eforget(‘key’)%3B%0A” message=”” highlight=”” provider=”manual”/]

در لاراول شما می توانید برای پاک کردن تمام داده های جلسه از متد flush به جای متد forgot استفاده کنید. همچنین بکار گیری متد pull به شما کمک میکند بعد از دریافت مقدار Session مورد نظر آن Session حذف شود، این متد نیز یک kay را به عنوان آرگومان ورودی دریافت می کند. در واقع تفاوت متد forgot و متد pull در این است که متد forgot مقدار جلسه را بر نمی گرداند و مستقیما آن را حذف می کند ولی متد pull ابتدا مقدار Session مورد نظر را برگردانده و سپس آن Session را حذف می کند. برای بررسی بهتر توضیحات ارایه شده به ذکر یک مثال می پردازیم برای این منظور ابتدا با خط فرمان زیر کنترلر SessionController را ایجاد می کنیم.

[pastacode lang=”markup” manual=”php%20artisan%20make%3Acontroller%20SessionController%20–plain%0A” message=”” highlight=”” provider=”manual”/]

بعد از اجرای خط فرمان بالا فایل SessionController.php ایجاد می شود، آن را بصورت زیر تغییر دهید.

[pastacode lang=”php” manual=”%3C%3Fphp%0A%0Anamespace%20App%5CHttp%5CControllers%3B%0A%0Ause%20Illuminate%5CHttp%5CRequest%3B%0Ause%20App%5CHttp%5CRequests%3B%0Ause%20App%5CHttp%5CControllers%5CController%3B%0A%0Aclass%20SessionController%20extends%20Controller%20%7B%0A%20%20%20public%20function%20accessSessionData(Request%20%24request)%20%7B%0A%20%20%20%20%20%20if(%24request-%3Esession()-%3Ehas(‘my_name’))%0A%20%20%20%20%20%20%20%20%20echo%20%24request-%3Esession()-%3Eget(‘my_name’)%3B%0A%20%20%20%20%20%20else%0A%20%20%20%20%20%20%20%20%20echo%20’No%20data%20in%20the%20session’%3B%0A%20%20%20%7D%0A%20%20%20public%20function%20storeSessionData(Request%20%24request)%20%7B%0A%20%20%20%20%20%20%24request-%3Esession()-%3Eput(‘my_name’%2C’uclass.ir%20website’)%3B%0A%20%20%20%20%20%20echo%20%22Data%20has%20been%20added%20to%20session%22%3B%0A%20%20%20%7D%0A%20%20%20public%20function%20deleteSessionData(Request%20%24request)%20%7B%0A%20%20%20%20%20%20%24request-%3Esession()-%3Eforget(‘my_name’)%3B%0A%20%20%20%20%20%20echo%20%22Data%20has%20been%20removed%20from%20session.%22%3B%0A%20%20%20%7D%0A%7D” message=”app/Http/Controllers/SessionController.php” highlight=”” provider=”manual”/]

حال محتویات فایل روت را بصورت زیر ویرایش کنید.

[pastacode lang=”php” manual=”Route%3A%3Aget(‘session%2Fget’%2C’SessionController%40accessSessionData’)%3B%0ARoute%3A%3Aget(‘session%2Fset’%2C’SessionController%40storeSessionData’)%3B%0ARoute%3A%3Aget(‘session%2Fremove’%2C’SessionController%40deleteSessionData’)%3B” message=”app/Http/routes.php” highlight=”” provider=”manual”/]

برای مقدار دهی به Session مورد نظر از آدرس زیر استفاده کنید.

[pastacode lang=”markup” manual=”http%3A%2F%2Flocalhost%3A8000%2Fsession%2Fset” message=”” highlight=”” provider=”manual”/]

خروجی آدرس بالا باید بصورت زیر باشد.

[pastacode lang=”markup” manual=”Data%20has%20been%20added%20to%20session” message=”” highlight=”” provider=”manual”/]

برای دریافت مقدار Session مورد نظر از آدرس زیر استفاده کنید.

[pastacode lang=”markup” manual=”http%3A%2F%2Flocalhost%3A8000%2Fsession%2Fget%0A” message=”” highlight=”” provider=”manual”/]

خروجی آدرس بالا باید بصورت زیر باشد.

[pastacode lang=”markup” manual=”uclass.ir%20website” message=”” highlight=”” provider=”manual”/]

برای حذف مقدار Session مورد نظر از آدرس زیر استفاده کنید.

[pastacode lang=”markup” manual=”http%3A%2F%2Flocalhost%3A8000%2Fsession%2Fremove” message=”” highlight=”” provider=”manual”/]

خروجی آدرس بالا باید بصورت زیر باشد.

[pastacode lang=”markup” manual=”Data%20has%20been%20removed%20from%20session.” message=”” highlight=”” provider=”manual”/]