فهرست:

کوکی ها در انجام جلسه کاربر در یک وب اپلیکیشن ، نقش مهمی را بازی می کنند. در این مبحث، شما با کار کوکی ها در وب اپلیکیشن های مبتنی بر لاراول آشنا خواهید شد.

ایجاد یک کوکی در لاراول

کوکی را می توان توسط global cookie helper لاراول که یک نمونه از SymfonyComponentHttpFoundationCookie می باشد ایجاد نمود. کوکی را می توان با استفاده از متد withCookie به response پیوست کرد. برای فراخوانی متد withCookie یک نمونه response از کلاس IlluminateHttpResponse ایجاد می کنیم. لازم به ذکر است کوکی ایجاد شده توسط Laravel رمزگذاری و امضا شده و توسط کاربر قابل اصلاح یا خواندن نیست. برای درک بهتر از توضیحات انجام شده به مثال زیر دقت کنید.

//Create a response instance
$response = new Illuminate\Http\Response('Hello World');

//Call the withCookie() method with the response method
$response->withCookie(cookie('name', 'value', $minutes));

//return the response
return $response;

متد Cookie سه آرگومان خواهد داشت. آرگومان اول نام کوکی، آرگومان دوم مقدار کوکی و آرگومان سوم مدت زمان کوکی می باشد که پس از آن کوکی به طور خودکار حذف می شود. چنانچه مد نظرتان باشد که کوکی ورد نظر شما برای همیشه دارای اعتبار زمانی باشد بصورت زیر آن را ایجاد می نماییم.

$response->withCookie(cookie()->forever('name', 'value'));

بازیابی کوکی در لاراول

پس از ایجاد کوکی، می توانیم کوکی مورد نظر را با استفاده از متد cookie بازیابی کنیم. در اینجا متد cookie فقط یک آرگومان خواهد داشت که نام کوکی خواهد بود. متد cookie را می توان با استفاده از نمونه IlluminateHttpRequest فراخوانی کرد. نمونه کد زیر را بررسی بفرمایید.

//’name’ is the name of the cookie to retrieve the value of
$value = $request->cookie('name');

مثال کاربردی برای کوکی ها در لاراول

برای درک بیشتر کوکی ها در لاراول مثال زیر را بررسی می کنیم، برای ایجاد یک کنترلر که در آن کوکی را دستکاری می کنیم، دستور زیر را اجرا کنید.

php artisan make:controller CookieController --plain

کد زیر را در فایل app/Http/Controllers/CookieController.php قرار دهید.

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

namespace App\Http\Controllers;

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

class CookieController extends Controller {
   public function setCookie(Request $request) {
      $minutes = 1;
      $response = new Response('Hello World');
      $response->withCookie(cookie('name', 'uclass', $minutes));
      return $response;
   }
   public function getCookie(Request $request) {
      $value = $request->cookie('name');
      echo $value;
   }
}

کد های زیر را در فایل app/Http/routes.php بارگذاری کنید.

app/Http/routes.php
Route::get('/cookie/set','CookieController@setCookie');
Route::get('/cookie/get','CookieController@getCookie');

برای ایجاد کردن کوکی مورد نظر به آدرس زیر مراجعه می کنیم بعد از لود آدرس کوکی مورد نظر شما ایجاد شده است.

http://localhost:8000/cookie/set

و خروجی مروگر شما باید بصورت زیر باشد.

Hello World

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

http://localhost:8000/cookie/get

وخروجی مرورگر شما باید بصورت زیر باشد.

uclass