如何从CakePHP组件中访问非Cake会话数据


How to access non-Cake session data from within a CakePHP component

我目前正在集成两个php应用程序:

  1. 一个经过多年构建的大型定制PHP web应用程序,不是用CakePHP编写的
  2. 一个小型CakePHP仪表板应用程序(jSlate)

蛋糕应用程序在同一个域上,位于主应用程序的子文件夹中。

在CakePHP应用程序中,我需要访问主定制应用程序在$_SESSION中设置的数据,但它似乎不可访问。我认为Cake正在处理会话数据。它是否存储在我可以访问的地方?如果是,如何访问?

我已经尝试了从php脚本访问cakephp会话变量的答案?,即:

session_name('CAKEPHP'); 
session_start(); 
print_r($_SESSION);

但它不包含我需要的会话变量。

在设置变量之前,主应用程序需要指定session_name:

session_name('MAINAPP');
$_SESSION['foo'] = 'bar';

然后在CakePHP应用程序中,您可以通过以下方式访问:

session_name('MAINAPP');
$foo = $_SESSION['foo'];
session_name('CAKEAPP');

最后一行很重要,因为它将会话名称重置回Cake应用程序的名称,否则Cake会话变量将无法访问。

或者,您可以将主应用程序和蛋糕应用程序设置为使用相同的会话名称,但这会引入命名冲突的可能性。