Larael的Cookie与Session

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'));
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值