Laravel Cookie
在处理Web应用程序的用户会话时,Cookie扮演着重要角色。在本章中,您将学习在基于Laravel的Web应用程序中使用Cookie的方法。
创建Cookie
Laravel的全局Cookie帮助器可以创建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 methodresponse->withCookie(cookie('name', 'value', minutes));
//return the response
returnresponse;
Cookie()方法需要三个参数。第一个参数是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 − 执行成功后,您将收到以下输出 −
步骤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));
returnresponse;
}
public function getCookie(Request request) {value = request->cookie('name');
echovalue;
}
}
步骤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 - 输出结果将显示如下图所示。