1. Cookie操作
将cookie附加到响应中
可以使用cookie方法向输出的Illuminate\Http\Response实例附加cookie,需要传递,名称、值、cookie的过期时间(以分钟为单位)给该方法(也就是使用response设置cookie)
至于为什么要使用response响应来设置cookie,(这因为cookie是存储到客户端中,客户端那边请求设置cookie到服务端,服务端响应设置到客户端)
而使用响应(response)设置cookie,必须返回响应数据才可设置cookie成功
同样,还可以使用cookie的facade(门面类,)用于从应用中附加到输出响应的cookies,queue方法接受一个cookie实例,或则用于创建cookie的参数列表,这些cookie将在输出响应被发送至浏览器前缀附加
获取cookie
从请求中获取Cookies、Laravel框架获取全部cookies都是加密的,并且已经用授权码签名,这以为着如果它们被客户端改变就会失败,使用Illuimiate\Http\Requests实例的cookie方法可以从请求中获取cookie值
/**
* 获取cookie
*/
public function getCookie(Request $request)
{
# 通过request类获取cookie值
$value = $request->cookie('key');
# 通过门面类获取cookie值
$value = Cookie::get('key');
}
Session操作
1. 设置session
想要存储数据到Session,可以使用request类请求的put方法,或则使用辅助函数,session设置(一般使用辅助session函数比较多)
/**
* 设置session操作(存储到服务端)
*/
public function setSession(Request $request)
{
# 通过请求实例设置session,使用session调用put方法设置
$request->session()->put('key' , 'value');
# 使用session辅助函数设置sessions(如果传参数是数组的话,则是设置session,如果传单个字符串则是获取)
session(['key' => 'value']);
}
2. 获取session数据:
Laravel中处理Session数据由两种主要方法,全局辅助函数session和通过一个request请求类实例,首先,我们来看看通过控制器方法类型提示一个Request实例来访问session,控制器方法以来会通过Laravel服务容器实现自动注入(Laravel使用session默认会存储缓存)
/**
* 获取session
*/
public function setSession(Request $request)
{
# 通过request请求类来设置session
$value = $request->session()->get('key');
}
当你从Session获取值时,你还可以传递一个默认值传给get第二个参数,(如果使用request请求类来获取session数据,如果获取的key不存在,可以使用第二个参数默认值,它会输出默认值)例如:
/**
* 获取session,并且设置默认值
*/
public function getSession(Request $request)
{
# 第二个参数表示,如果获取的key不存在没有值。会默认输出第二个参数设置的默认值
$default_value = $request->session()->get('key', '我是默认值');
}
全局辅助函数session
也可以使用全局辅助函数session来获取和存储session数据,使用的字符串类型作为参数辅助函数,session也可以设置默认值。做法跟request类使用session一样,如果session使用的是字符串它默认会获取该字符串key的数据,如果使用的是数组,默认会当作存储session数据
Route::get('home', function () {
# 使用全局session辅助函数获取session
$value = session('key1');
# 使用全局session辅助函数设置session
$value = session(['key' => '123']);
$value = session('key');
# 设置一个默认值
$value1 = session('key1', '获取不到值,我是默认值');
dd($value1);
});
检查session数据:
判断Sessoin是否存在某个值
要确定session中是否存在某个值,可以使用has方法,如果该值存在并且为null的话,则返回false,必须是key存在并且值不为null时才返回true
# has判断一个key是否存在并且value不为null,返回true
dd(session()->has('key'));
如果要确定session是否存在,可以使用exists来判断,该方法是,如果一个key存在,并且value为null的话,也会返回true,只要key存在就返回true,跟has也是有区别的
# exists 判断一个key是否存在,如果存在并且value不管是null还是不为null都返回true
session(['key' => null]);
dd(session()->exists('key')); # 此时会返回true
dd(session()->exists('key1111')); # 此时该key不存在,返回false
删除session数据:
forget方法会从Session中删除指定数据,如果向从session中删除所有数据,可以使用flush方法
# 设置一个session
session(['users' => 123]);
# 获取session
# dd(session('users'));
# 将users key 删除
session()->forget('users');
# 在查询是否存在
dd(session('user'));