HTTP协议是无状态的,所以有了cookie和session技术,它们之间配合来维护一个状态。在laravel中设置及获取session是非常方便的。下面,我们一起来看看吧。
配置
session是保存在服务器上的,默认的session是保存在服务器上的文件中。但该方法的效率不高,目前流行的是将session保存在redis或memcached第三方数据库中。这些nosql的读写效率非常高,并且更容易管理。下面,看laravel是如何配置session的
laravel的session配置文件是在config/session.php中。该配置文件中可以配置session存储的方式,有效时间等。
需要配置存储方式为redis,则需要修改driver配置项,将其改为redis即可。除此之外,还支持本地存储(默认)、关系型数据库存储等。
获取session值
首先来看如何获取session值,通过响应实例request的session方法即可获取,演示代码如下:
$request->session()->get('key');
get这个方法的第二个参数是用来设置默认值的,如果么有获取到对应的session值,则返回默认值,演示代码如下:
$request->session()->get('key', 'default');
第二个参数也可以是一个回调函数,通过回调函数返回一个默认值
$request->session()->get('key', function () { return 'default'; });
除了上述的方法外,还可以通过全局的session函数来获取,它们的用法是一致的。
还可以通过all方法来一次性获取所有的session值,该方法返回一个数组:
$request->session()->all();
laravel还提供了一个方法来方便的判断该session是否存在,使用has方法
if ($request->session()->has('key')) {}
另外还有一个exists方法,它与has的区别是has必须存在且不为空才返回真,而exists只要存在就返回真。
设置sesson值
设置session可以通过两种方法,下面是演示代码:
$request->session()->put('key', 'val'); session(['key1' => 'val1', 'key2' => 'val2']);
删除session值
可以通过forget方法来删除指定的session,还可以通过flush来删除所以session。下面是演示代码:
$request->session()->forget('k1'); $request->session()->forget(['k1', 'k2', 'k3']); $request->session()->flush();
相关推荐:《laravel教程》
Atas ialah kandungan terperinci laravel中的session的CURD操作. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!
Pengenalan kepada komponen laravel
Pengenalan kepada perisian tengah laravel
Apakah corak reka bentuk yang digunakan oleh laravel?
Mana satu lebih mudah, thinkphp atau laravel?
Tutorial Laravel
Algoritma apriori peraturan persatuan
Bagaimana untuk menggunakan pernyataan sisip dalam mysql
Bagaimana untuk memadam sepenuhnya mongodb jika pemasangan gagal