从非Laravel项目中使用$_SESSION在Laravel中

7
在我的公司中,我们使用一种(非Laravel)应用程序进行登录。当用户登录成功后,我们将会话信息存储在$_SESSION变量中,例如:$_SESSION['XPTO']。
该用户可以访问很多工具(均为非Laravel),我们需要使用 $_SESSION['XPTO'] 在各处获取已认证用户的相关数据。
问题是,我使用 Laravel 5.3 开发了一个新工具,我需要获取 $_SESSION 变量中的数据。我认为 Laravel 没有使用原生的 PHP 会话!
那么,我该如何获取这些信息?
谢谢您的帮助。

May http://stackoverflow.com/questions/39960209/laravel-session-start-returning-a-1/39960346#39960346 - Ilya Yaremchuk
你可以在 Laravel 中使用 Session::put();Session::get() 来存储和获取会话。更多信息请参考:https://laravel.com/docs/5.3/session - S.I.
@IlyaYaremchuk 谢谢!但是我需要将我的 Laravel 项目与我的登录应用程序(一个非 Laravel 项目)集成。登录应用程序将用户名存储在 $_SESSION['XPTO'] 中。我需要在我的 Laravel 项目中获取该数据 :x - Erbi Silva
你在Laravel中访问会话变量不应该有任何问题,但你无法使用Laravel内置的会话对象(例如Session::)。这些应用程序是否在同一个域上? - David Nguyen
@Erbi 不是用原生的php session,而是使用$_SESSION['XPTO']来访问变量的Laravel会话。 - David Nguyen
显示剩余3条评论
4个回答

8
要访问$_SESSION,只需在您的Laravel项目index.php文件开头放置session_start()即可。

TY... Laravel内置的会话出现故障/未按预期工作。$_SESSION['whatever'] ?? 'default'现在正常工作。 - Andrew

3

自从Laravel 5版本以后,Laravel不再使用原生的PHP会话。

我们不再使用Symfony(因此也不再使用PHP)的会话处理设施,而是采用了一个定制的解决方案,这个方案更简单易于维护。

在Laravel中,您可以使用Session::门面或session()全局助手来处理会话

// Saving value.
session()->put('key', 'value');

// Gettinng value.
session('key');

2
但是,我该如何访问来自我的登录应用程序的数据? - Erbi Silva

2
Laravel 提供了更多内置方法来获取和设置会话数据。在 Laravel 中处理会话很容易。会话变量用于存储有关用户或任何您想要访问应用程序的所有页面上的某些信息或数据。在 Laravel 中,会话配置存储在 "app/config/session.php" 中。
我在这里找到了一个非常简单易懂的教程,可以帮助您理解在 Laravel 中使用 SESSION 的用法。
以下是设置会话中单个变量的语法:
Syntax :- Session::put('key', 'value');
示例:
Session::put('email', $data['email']); //array index
Session::put('email', $email); // a single variable
Session::put('email', 'sharmarakesh395@gmail.com'); // a string

从会话中获取值:
检索会话值的语法:
语法:`Session::get('key');`
例子:
Session::get('email');

检查会话中是否存在变量:
// Checking email key exist in session.
if (Session::has('email')) {
  echo Session::get('email');
}

从会话中删除变量:-
语法:Session::forget('key');
示例:
Session::forget('email');

从会话中删除所有变量:-
Session::flush();

1
谢谢你的回答。我有一个旧应用程序,它负责登录。在我输入我的登录信息之后,在该应用程序内部,我必须选择要使用的工具。 MyPortal是一种新工具。这是我使用Laravel开发的第一个工具!我需要访问$_SESSION以在Laravel中获取用户名和来自登录应用程序的其他一些信息。我的问题是,如果我可以在Laravel中获得它。因为我还没有成功使用Session::class :x - Erbi Silva
1
@ErbiSilva,你找到这个问题的解决方案了吗?很抱歉多年后打扰你。我最近也在寻找同样问题的解决方案。 - userDuR

0

你只需要使用

session_start();

在你的 Laravel 代码中

然后

dd($_SESSION);

//it will print all keys inside sessions variable in your laravel project..

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接