【问题标题】:Is there a way to access the PHP native session variable within Laravel?有没有办法在 Laravel 中访问 PHP 本机会话变量?
【发布时间】:2018-03-08 04:49:51
【问题描述】:

我有一个处理身份验证并设置一些会话变量的遗留应用程序;我需要在 Laravel 应用程序中访问这些会话变量。我尝试启动一个会话并访问控制器中的一个变量 - 这不起作用。我收到一个糟糕的错误 - 未定义的索引:名称
这是我尝试过的:

public function __construct() 
    {
        session_start();
    }

public function index()        
    {
       //test output php (not Laravel) sessions   
       echo "TEST CONTROLLER ACCESSED!!\n\n";  
       print_r($_SESSION['name']);
    }

我也在路由中的闭包中尝试了相同的方法。都失败了。

有没有办法在 Laravel 中访问 PHP 原生会话变量?

编辑
我不明白我的问题被标记为重复。引用的答案是关于我得到的错误。它没有回答我的问题。我理解错误的含义,我需要知道为什么会话对 Laravel 不可用。

请让我知道您需要的任何其他信息。
编辑 2
$_SESSION['name'] 存在于旧版应用程序中,但不会传递给 Laravel。这两个应用程序位于同一服务器和域上。如何追踪正在发生的事情?

【问题讨论】:

  • 尝试使用dd($_SESSION)查看超级全局会话。这将使您更深入地了解原始会话数据的结构。
  • 您可以正常访问它。只需使用if(isset($_SESSION['name'])) 来检查$_SESSION['name'] 是否存在,然后再使用它。
  • @ceejayoz 请解释我的问题是如何重复的。我不明白。
  • 这只是表示name 索引不存在。
  • @RogerCreasy,我也不确定他为什么将其标记为重复。连接的答案与您要查找的内容无关。希望这会有所帮助。您可以使用session(['team_id' => $team_id]); 设置会话变量,并且可以像这样访问它们:session($team_id)

标签: php laravel session-variables


【解决方案1】:

我发布此内容是希望对其他人有所帮助。

原来旧版应用使用了非标准的 session.save_path (我正在处理一个非常大的代码库。所以,这个事实并不像看起来那么明显)。

解决方案是将保存路径设置为 Laravel 中的相同位置。 ini_set('session.save_path', '/path/to/sessions/');

这必须在session_start()之前完成

查看有关 PHP 命令 here 的信息。

【讨论】:

    猜你喜欢
    • 2011-06-10
    • 2014-01-30
    • 2019-02-16
    • 2021-10-09
    • 1970-01-01
    • 2018-04-22
    • 2023-02-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多