一、简介
cookie
常用于识别用户。cookie
是一种服务器留在用户计算机上的小文件。每当同一台计算机通过浏览器请求页面时,这台计算机将会发送cookie
。通过PHP
,能够创建并取回cookie
的值。Laravel
框架为了安全,它的cookie
是加密的。
二、cookie()
- 属性参数分析
cookie($name, $value, $minutes, $path, $domain, $secure, $httpOnly, $sameSite);
参数 | 说明 | 举例 |
name | cookie的名字 | 使用 $_COOKIE[‘cookiename’] 调用名为 cookiename 的 cookie。 |
value | cookie的值,存放在客户端,不要存放敏感数据 | 假定 name 是 ‘cookiename’,可以通过$_COOKIE[‘cookiename’] 取得其值。 |
minutes | Cookie 过期的时间(分钟)。这是个 Unix 时间戳,即从 Unix 纪元开始的秒数。换而言之,通常用 time() 函数再加上秒数来设定 cookie 的失效期。或者用mktime()来实现。 | time()+60*60*24*30 将设定 cookie 30 天后失效。如果未设定,cookie 将会在会话结束后(一般是浏览器关闭)失效。 |
path | Cookie 在服务器端的有效路径。 | 如果该参数设为 ‘/’ 的话,cookie 就在整个 domain 内有效,如果设为 ‘/foo/’,cookie 就只在 domain 下的 /foo/ 目录及其子目录内有效,例如 /foo/bar/。默认值为设定 cookie 的当前目录。 |
domain | 该 cookie 有效的域名。 | 要使 cookie 能在如 example.com 域名下的所有子域都有效的话,该参数应该设为 ‘.example.com’。虽然 . 并不必须的,但加上它会兼容更多的浏览器。如果该参数设为www.example.com 的话,就只在 www 子域内有效。细节见Cookie 规范中的 tail matching。 |
secure | 指明 cookie 是否仅通过安全的 HTTPS 连接传送。当设成 TRUE 时,cookie 仅在安全的连接中被设置。默认值为FALSE。 | 0 或 1 |
httpOnly | 是否只支持 HTTP 请求 | 0 或 1 |
sameSite | Chrome 51 开始,浏览器的 Cookie 新增加了一个SameSite属性,用来防止 CSRF 攻击和用户追踪。 | 参考地址 http://www.ruanyifeng.com/blog/2019/09/cookie-samesite.html |
- 不是特殊情况,一般使用前
4
个参数就够了:
cookie($name, $value, $minutes); cookie($name, $value, $minutes, $path); cookie('dzm', 'dzm123456', 1); // '/' 为根目录,不填默认就是根目录 cookie('dzm', 'dzm123456', 1, '/');
三、Laravel
使用 cookie()
- 测试案例
Route::get('req', function () { // 设置 cookie,1分钟有效期 return response('我设置了Cookie')->cookie('name', 'dzm', 1); // 获取 cookie return request() ->cookie('name'); });
过期时间到了则自动删除: