如何在 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 值的主要内容,如果未能解决你的问题,请参考以下文章