如何在Laravel中获取会话ID?

mst*_*rdy 37 php laravel laravel-4

我想在Laravel 4中获得会话的ID

在Laravel 3中,它有点hacky,但可能使用此代码:

$session_id = Session::$instance->session['id'];
Run Code Online (Sandbox Code Playgroud)

但我无法在Laravel 4中解决这个问题...引用该Session::$instance对象会引发错误:

访问未声明的静态属性:Illuminate\Support\Facades\Session :: $ instance

试过:

$session_id = Session::get('id');
Run Code Online (Sandbox Code Playgroud)

但无济于事..任何想法?

mst*_*rdy 82

取决于Laravel的版本:

Laravel 3:

$session_id = $_COOKIE["laravel_session"];
Run Code Online (Sandbox Code Playgroud)

Laravel 4.0:

只是没有版本4.1及以上:

$session_id = session_id(); //thanks Phill Sparks
Run Code Online (Sandbox Code Playgroud)

Laravel 4.1(及以后):

$session_id = Session::getId();
Run Code Online (Sandbox Code Playgroud)

要么

$session_id = session()->getId()
Run Code Online (Sandbox Code Playgroud)

Laravel不再直接使用内置的PHP会话,因为开发人员可以选择使用各种驱动程序来管理访问者的会话(Laravel 4.2,Laravel 5.1,Laravel 5.2的文档).

因此,现在我们必须使用Laravel的SessionFacade或session()helper来获取会话的ID:

  • 只需使用`session_id()` (5认同)

小智 38

只是为自己寻找一点,因为上面的答案对我不起作用(Laravel 4.1)......

不得不用这个:

Session::getId();
Run Code Online (Sandbox Code Playgroud)


Ahm*_*oud 5

在 laravel 5.5 中,首先将其写入控制器中use Session; ,然后在控制器函数中写入以下行session()->getId();

  • 使用 Facade 并不是真正必要的,因为您正在使用全局帮助器 `session()` (17认同)