php laravel session,Laravel处理session(会话)的方法详解

在Web应用程序中,有必要识别跨越请求的用户并为每个用户保存数据,为此,像Laravel这样的框架提供了一种称为会话的机制。本篇文章就来为大家介绍关于Laravel处理session(会话)的方法。

9895b1aed23dc556c8f6e2c4ef6fc9b2.png

会话可以存储数据(键和值),Laravel提供各种后端会话,可以在config / session.php中设置。

默认设置的文件会话将会话保存在storage / framework / sessions /目录中的文件中。在生产环境中,我们将考虑使用数据库会话,redis会话等,但在开发环境中,使用默认的文件会话就足够了。php中文网学习专题:php session (包含图文、视频、案例)

如何在Laravel中使用会话(session)

使用Laravel操作会话有两种主要方法。

一种是通过传递给操作的Request实例。

使用Illuminate \ Session \ Store实例。// 从会话中获取指定的数据

//在没有存在键的情况下,将返回的默认值指定为第二参数

$value = $request->session()->get('key’);

$value = $request->session()->get('key', 'default’);

$value = $request->session()->get('key', function () {

return 'default';

});

// 获取会话中的所有数据

$data = $request->session()->all();

// 检查指定的数据是否存在于会话中

if ($request->session()->exists('key')) {

// 存在

}

if ($request->session()->has('key')) {

// null不存在

}

// 将数据保存到会话

$request->session()->put('key', 'value');

$request->session()->put(['key1' => 'value1', 'key2' => ‘value2']);

// 从会话取得指定的数据后,删除该数据

$value = $request->session()->pull('key', 'default’);

// 从会话中删除指定的数据

$request->session()->forget('key');

// 从会话中删除所有数据

$request->session()->flush();

另一种方法是使用全局辅助函数session()。

使用Illuminate \ Session \ SessionManager实例。// 从会话中获取指定的数据

// 在没有存在键的情况下,将返回的默认值指定为第二参数

$value = session('key’);

$value = session('key', 'default');

$value = session('key', function () {

return 'default';

});

$value = session()->get(‘key');

$value = session()->get('key', 'default');

$value = session()->get('key', function () {

return 'default';

});

// 取得会话中的全部数据

$data = session()->all();

// 检查指定的数据是否存在于会话中

if (session()->exists('key')) {

// 存在

}

if (session()->has('key')) {

// null不存在

}

// 保存数据到会话

session(['key1' => 'value1', 'key2' => ‘value2']);

session()->put(['key1' => 'value1', 'key2' => 'value2']);

// 从会话取得指定的数据后,删除该数据

$value = session()->pull('key', 'default’);

// 从会话中删除指定的数据

session()->forget('key');

// 从会话中删除所有数据

session()->flush();

我们来看在Laravel中使用会话(session)的具体示例

一个非常简单的例子

我们定义以下路线。routes/web.php

Route::get('/put-data', function () {

session()->put(['email' => 'user@example.com']);

return session()->get('email');

});

Route::get(‘/list-data', function () {

return session()->all();

});

首先,在浏览器中访问/ put-data时,会执行第一条路径,可以确认数据已保存在会话中。user@example.com

接下来,在浏览器中访问/ list-data时,将执行第二条路径,可以确认之前保存的数据是否已保留{"email":"user@example.com","_previous":{"url":"http:\/\/localhost:8000\/put-data"},"_flash":{"old":[],"new":[]},"_token":"UYcsteOQAj58e9Aay5uNc3V4F0fSpi9VfEBlKhTZ"}

当然还有其他数据,但这些是自动保存的数据,Laravel本身也在使用会话。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值