Laravel Cookie


建立Cookie

Cookie可以通過 Laravel 的全域性 cookie 助手來建立。

它是 Symfony\Component\HttpFoundation\Cookie 的一個範例,cookie可以附加到使用withCookie()方法的響應。 

呼叫 withCookie()方法建立 Illuminate\Http\Response 類的一個範例。由Laravel生成的cookie經過加密並簽名,並且不能由客戶修改或讀取。

這裡是範例程式碼的解釋。
//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() 方法帶有3個引數。第一個引數是Cookie的名稱,第二個引數是cookie的值,而第三個引數是在此之後自動刪除cookie的值的持續時間。

Cookie可以使用 forever方法來來設定永遠生效,如下面的程式碼所示。
$response->withCookie(cookie()->forever('name', 'value'));

檢索Cookie

當我們設定Cookie,可以通過 cookie()方法檢索cookie。cookie()方法只有一個引數,它是Cookie的名稱。cookie方法可以用Illuminate\Http\Request 的範例呼叫。

這裡是一個範例程式碼。
//’name’ is the name of the cookie to retrieve the value of
$value = $request->cookie('name');

範例

第1步 - 執行下面的命令來建立一個控制器用來操作 cookie。
php artisan make:controller CookieController
第2步 - 成功執行後,您會得到以下輸出-

第3步 - 複製下面的程式碼到檔案 - 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', 'virat', $minutes));
      return $response;
   }
   public function getCookie(Request $request){
      $value = $request->cookie('name');
      echo $value;
   }
}
第4步 - 新增下面一行到檔案 - app/Http/routes.php。

app/Http/routes.php

Route::get('/cookie/set','CookieController@setCookie');
Route::get('/cookie/get','CookieController@getCookie');
第5步 - 存取以下網址設定cookie。

http://localhost:8000/cookie/set

第6步 - 將顯示如下所示的輸出。在下面螢幕截圖是火狐瀏覽器,但可根據你的瀏覽器情況可能有所不同,cookie也可以從cookie選項選中。

第7步 - 請存取以下網址,從上面的URL得到 cookie。

http://localhost:8000/cookie/get

第8步 - 得到的輸出結果如下圖所示。