如何在 cakephp 中获取 $_SESSION 值

Posted

技术标签:

【中文标题】如何在 cakephp 中获取 $_SESSION 值【英文标题】:how to get $_SESSION value in cakephp 【发布时间】:2012-05-30 09:02:43 【问题描述】:

我正在从位于 example.com/corephp/ 的核心 php 应用程序设置用户会话,现在我想将此用户重定向到 example.com (主站点)在 cakephp 中。

如何保留从核心 php 应用程序到 cakephp 应用程序的用户会话?

我尝试从核心 php 应用程序中设置 $_SESSION['user'] = someone$_SESSION['token'] = token 并尝试从 cakephp 中检索该值,但没有成功。

我试图用谷歌搜索,但没有合适的答案。

提前致谢。

---------- 编辑

我已经尝试添加 session_name('CAKEPHP');到核心 php 应用程序。 以及尝试将我的蛋糕应用程序的安全级别从中降低到低。

【问题讨论】:

你试过print_r($this->Session->read()); 吗? 是的,我看到了带有 userAgent、时间和超时值的配置数组 感谢你们的努力,所以理论上说如果在核心 php 应用程序中设置 $_SESSION 并且它们在同一台服务器上,我应该从 $_SESSION 中获取它?跨度> 【参考方案1】:

没有测试,但试试这个。

在您的 corephp 应用程序中:

$_SESSION['Auth']['User'] = $someone;

我的理由是它会设置 $_SESSION,但也许 CakePHP 出于某种原因无法识别它。所以我们使用 Cake 的 API 设置了正确的方式:

在 CakePHP 中

$this->Session->write('Auth.User', $_SESSION['Auth']['User']);

【讨论】:

我在你的例子中得到 $_SESSION['user'] 为空 @happyhardik: $_SESSION['user'] 在 CakePHP 中为空? 是的,我从核心 php 应用程序中将变量设置为 $_SESSION['username'](准确地说),它在我的蛋糕应用程序中未定义 两个系统是否使用相同的会话名称? IE。他们是否使用相同的会话 cookie(相同的会话 ID)? 我尝试做类似这样的事情 session_name('CAKEPHP');在我的核心 php 应用程序中,但没有帮助【参考方案2】:

始终使用会话包装器。这就是他们的目的

在控制器中: http://book.cakephp.org/2.0/en/controllers/components.html#using-components

在视图中: http://book.cakephp.org/2.0/en/core-libraries/helpers/session.html

其他地方: http://book.cakephp.org/2.0/en/development/sessions.html#reading-writing-session-data

永远不要使用 $_SESSION 访问它,你应该没问题(cake 会为你启动会话并在后台处理很多事情)。

如果您共享会话,请确保您设置相同的会话名称。两者也应该使用相同的会话类型(可能是 php)。

【讨论】:

以上是关于如何在 cakephp 中获取 $_SESSION 值的主要内容,如果未能解决你的问题,请参考以下文章

未定义变量:$_SESSION

如何在cakephp 2中查看会话变量?

如何在 CakePhp 组件中调用回调?

cakephp 多个数据库中的关联 Cakephp 2

CakePHP Cookie/Session 问题

如何在 CakePhp 中创建 Zip 文件并下载?