Laravel - Cookie



Cookie 在處理 Web 應用的使用者會話中扮演著重要的角色。本章將學習如何在基於 Laravel 的 Web 應用中使用 Cookie。

建立 Cookie

Cookie 可以透過 Laravel 的全域性 cookie 輔助函式建立。它是一個 Symfony\Component\HttpFoundation\Cookie 的例項。可以使用 withCookie() 方法將 Cookie 附加到響應中。建立一個 Illuminate\Http\Response 類的響應例項來呼叫 withCookie() 方法。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 方法將 Cookie 設定為永久有效,如下面的程式碼所示。

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

檢索 Cookie

設定 Cookie 後,可以使用 cookie() 方法檢索 Cookie。此 cookie() 方法只接受一個引數,即 Cookie 的名稱。可以使用 Illuminate\Http\Request 的例項呼叫 cookie() 方法。

以下是一個示例程式碼。

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

示例

觀察以下示例以瞭解更多關於 Cookie 的資訊:

步驟 1 - 執行以下命令以建立一個控制器,我們將在其中操作 Cookie。

php artisan make:controller CookieController --plain

步驟 2 - 成功執行後,您將收到以下輸出:

CookieController

步驟 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 - 訪問以下 URL 來設定 Cookie。

https://:8000/cookie/set

步驟 6 - 輸出將如下所示。截圖中的視窗來自 Firefox,但根據您的瀏覽器,也可以從 Cookie 選項中檢查 Cookie。

Hello World

步驟 7 - 訪問以下 URL 從上面的 URL 獲取 Cookie。

https://:8000/cookie/get

步驟 8 - 輸出將如下圖所示。

Virat
廣告