Laravel - Cookie
Cookie 在 Web 应用程序上处理用户会话时起着重要作用。在本章中,您将了解如何在基于 Laravel 的 Web 应用程序中使用 Cookie。
创建 Cookie
Cookie 可以通过 Laravel 的全局 Cookie 助手创建。它是 Symfony\Component\HttpFoundation\Cookie 的一个实例。可以使用 withCookie() 方法将 Cookie 附加到响应。创建 Illuminate\Http\Response 类的响应实例以调用 withCookie() 方法。Laravel 生成的 Cookie 经过加密和签名,客户端无法修改或读取。
以下是带有说明的示例代码。
//创建响应实例 $response = new Illuminate\Http\Response('Hello World'); //使用响应方法调用 withCookie() 方法 $response->withCookie(cookie('name', 'value', $minutes)); //返回响应 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' 是要检索其值的 cookie 的名称 $value = $request->cookie('name');
示例
观察以下示例以了解有关 Cookies 的更多信息 −
步骤 1 − 执行以下命令创建一个控制器,我们将在其中操作 cookie。
php artisan make:controller CookieController --plain
步骤 2 −执行成功后,您将收到以下输出 −
步骤 3 − 复制以下代码
app/Http/Controllers/CookieController.php file.
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。
http://localhost:8000/cookie/set
步骤 6 − 输出将如下所示。屏幕截图中显示的窗口取自 Firefox,但根据您的浏览器,也可以从 cookie 选项中检查 cookie。
步骤 7 − 访问以下 URL 以从上述 URL 获取 cookie。
http://localhost:8000/cookie/get
步骤 8 − 输出将如下图所示。