首页 php框架 Laravel Laravel处理session(会话)的方法详解

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

Dec 27, 2018 am 11:29 AM
session

 

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

laravel

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

默认设置的文件会话将会话保存在storage / framework / sessions /目录中的文件中。在生产环境中,我们将考虑使用数据库会话,redis会话等,但在开发环境中,使用默认的文件会话就足够了。

php中文网学习专题php session (包含图文、视频、案例)

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

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

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

使用Illuminate \ Session \ Store实例。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

// 从会话中获取指定的数据

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

$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实例。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

// 从会话中获取指定的数据

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

$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)的具体示例

一个非常简单的例子

我们定义以下路线。

1

2

3

4

5

6

7

8

9

10

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时,会执行第一条路径,可以确认数据已保存在会话中。

1

user@example.com

登录后复制

接下来,在浏览器中访问/ list-data时,将执行第二条路径,可以确认之前保存的数据是否已保留

1

{"email":"user@example.com","_previous":{"url":"http:\/\/localhost:8000\/put-data"},"_flash":{"old":[],"new":[]},"_token":"UYcsteOQAj58e9Aay5uNc3V4F0fSpi9VfEBlKhTZ"}

登录后复制

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

 

以上是Laravel处理session(会话)的方法详解的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

SpringBoot Session怎么设置会话超时 SpringBoot Session怎么设置会话超时 May 15, 2023 pm 02:37 PM

问题发现springboot项目生产session-out超时问题,描述下问题:在测试环境通过改动application.yaml配置session-out,经过设置不同时间验证session-out配置生效,于是就直接设置了过期时间为8小时发布到了生产环境。然而中午接到客户反应项目过期时间设置较短,半小时不操作就会话过期需要反复登陆。解决处理开发环境:springboot项目内置Tomcat,所以项目中application.yaml配置session-out是生效的。生产环境:生产环境发布是

session失效怎么解决 session失效怎么解决 Oct 18, 2023 pm 05:19 PM

session失效通常是由于 session 的生存时间过期或者服务器关闭导致的。其解决办法:1、延长session的生存时间;2、使用持久化存储;3、使用cookie;4、异步更新session;5、使用会话管理中间件。

PHP Session 跨域问题的解决方法 PHP Session 跨域问题的解决方法 Oct 12, 2023 pm 03:00 PM

PHPSession跨域问题的解决方法在前后端分离的开发中,跨域请求已成为常态。在处理跨域问题时,我们通常会涉及到session的使用和管理。然而,由于浏览器的同源策略限制,跨域情况下默认情况下无法共享session。为了解决这个问题,我们需要采用一些技巧和方法来实现session的跨域共享。一、使用cookie跨域共享session最常

php session刷新后没有了怎么办 php session刷新后没有了怎么办 Jan 18, 2023 pm 01:39 PM

php session刷新后没有了的解决办法:1、通过“session_start();”开启session;2、把所有的公共配置写在一个php文件内;3、变量名不能和数组下标相同;4、在phpinfo里面查看session数据的存储路径,并查看该文件目录下的sessio是否保存成功即可。

session php默认失效时间是多少 session php默认失效时间是多少 Nov 01, 2022 am 09:14 AM

session php默认失效时间是1440秒,也就是24分钟,表示客户端超过24分钟没有刷新,当前session就会失效;如果用户关闭了浏览器,会话就会结束,Session就不存在了。

PHP如何在多个文件中正确地读取和写入Session数据 PHP如何在多个文件中正确地读取和写入Session数据 Mar 23, 2023 am 11:12 AM

当您在使用PHP会话(Session)时,有时会发现Session在一个文件中可以正常读取,但在另一个文件中却无法读取。这可能会让您感到困惑,因为会话数据应该可以在整个应用程序中共享。本文将解释如何在多个文件中正确地读取和写入PHP会话数据。

Springboot2 session设置超时时间无效怎么解决 Springboot2 session设置超时时间无效怎么解决 May 22, 2023 pm 01:49 PM

问题:今天项目中遇到了一个设置时间超时的问题,按SpringBoot2的application.properties更改一直不生效。解决方案:server.*属性用于控制SpringBoot使用的嵌入式容器。SpringBoot将使用ServletWebServerFactory实例之一创建servlet容器的实例。这些类使用server.*属性来配置受控的servlet容器(tomcat,jetty等)。当应用程序作为war文件部署到Tomcat实例时,server.*属性不适用。它们不适用,

Redis的共享session应用如何实现短信登录 Redis的共享session应用如何实现短信登录 Jun 03, 2023 pm 03:11 PM

1.基于session实现短信登录1.1短信登录流程图1.2实现发送短信验证码前端请求说明:说明请求方式POST请求路径/user/code请求参数phone(电话号码)返回值无后端接口实现:@Slf4j@ServicepublicclassUserServiceImplextendsServiceImplimplementsIUserService{@OverridepublicResultsendCode(Stringphone,HttpSessionsession){//1.校验手机号if

See all articles