فهرست:

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

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

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

$value = $request->session()->get('key');

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

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

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

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

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

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

$request->session()->forget('key');

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

php artisan make:controller SessionController --plain

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

app/Http/Controllers/SessionController.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class SessionController extends Controller {
   public function accessSessionData(Request $request) {
      if($request->session()->has('my_name'))
         echo $request->session()->get('my_name');
      else
         echo 'No data in the session';
   }
   public function storeSessionData(Request $request) {
      $request->session()->put('my_name','uclass.ir website');
      echo "Data has been added to session";
   }
   public function deleteSessionData(Request $request) {
      $request->session()->forget('my_name');
      echo "Data has been removed from session.";
   }
}

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

app/Http/routes.php
Route::get('session/get','SessionController@accessSessionData');
Route::get('session/set','SessionController@storeSessionData');
Route::get('session/remove','SessionController@deleteSessionData');

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

http://localhost:8000/session/set

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

Data has been added to session

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

http://localhost:8000/session/get

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

uclass.ir website

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

http://localhost:8000/session/remove

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

Data has been removed from session.