如何在CakePHP 2.x外部访问loggedInUser的SESSION

时间:2015-11-19 22:12:54

标签: session cakephp cakephp-2.x

我需要知道用户是否已登录并需要在CakePHP外部的信息访问,但是在同一个域中。

我已尝试过以下代码

session_start();
session_name('CAKEPHP');
if(isset($_COOKIE['CAKEPHP'])){
  session_id($_COOKIE['CAKEPHP']);
  echo "isset<br/>";
  var_dump($_SESSION);
}
echo "user :".$_SESSION['userCakeUser']['email'];

我有以下输出:

isset

array(1) {

 ["userCakeUser"]=> object(__PHP_Incomplete_Class)#1 (7)
   { ["__PHP_Incomplete_Class_Name"]=> string(12) "loggedInUser" 
    ["email"]=> string(17)  "a@a.net"<
    ["hash_pw"]=> string(65) "dsfsdfsdfsdfsdfsdfddsfsdfsdfsdf" 
    ["user_id"]=> int(4) ["title"]=> string(10) "New Member"   
    ["displayname"]=> string(5) "Toto"
    ["username"]=> string(5) "Toto"
  }
}
Fatal error: Cannot use object of type __PHP_Incomplete_Class as array on line 15

请告诉我如何访问电子邮件。

2 个答案:

答案 0 :(得分:1)

错误消息为您提供了有关错误的足够信息:

Fatal error: Cannot use object of type __PHP_Incomplete_Class as array on line 15

这是你正在处理的对象。试试:

echo "user :".$_SESSION['userCakeUser']->email;

答案 1 :(得分:0)

谢谢@Inigo Flores,

它更好,但我有以下错误:

  

注意:main():脚本尝试执行方法或访问不完整对象的属性。请确保类定义&#34; loggedInUser&#34;您尝试操作的对象是在 unserialize()被调用之前加载或提供__autoload()函数来加载第16行的类定义。

所以我已经包括了这个课程:

protected void btnBegin_Click(object sender, EventArgs e) { pnlMessage.Visible = false; Page.Validate(); if (Page.IsValid) { // check some conditions. if fails: ltlMessage.Text = "Reason for failure"; pnlMessage.Visible = true; // works } }