2

我有一个奇怪的问题,我在$_SESSION变量中存储了一些数据。问题出在第 8 行和第 9 行之间。不知何故,数据未存储在会话中。而且我不知道问题出在哪里。

$data变量分配给会话时,它可以工作,但是当从会话中分配某些东西时$data,它不起作用!但是第 7 行告诉我访问$data数组是有效的。

问题出在哪里?

这里的链接是一个例子print_r($_SESSION)

代码:

 1: $ldap = new adLDAP();
 2: $ldap->authenticate($username, $password);
 3: $ldapUser = $ldap->user();
 4: $data = $ldapUser->info($username, $this->ldapInfo);
 5: $managerArr = explode(',', $data[0]['manager'][0]);
 6: $managerCN = explode('=', $managerArr[0]);
 7: $this->log->debug("Display Name = " . $data[0]['displayname'][0]);
 8: //$_SESSION['ldap_raw'] = $data; // <--- this freakin works
 9: $_SESSION[UserDetails::sessionInfoName][UserDetails::sessionInfoTitleName] = $data[0]['title'][0];
10: $_SESSION[UserDetails::sessionInfoName][UserDetails::sessionInfoTelephoneNumber] = $data[0]['telephonenumber'][0];
11: $_SESSION[UserDetails::sessionInfoName][UserDetails::sessionInfoDisplayNameName] = $data[0]['displayname'][0]);

UserDetails::sessionInfoName并且UserDetails::sessionInfoXXXXYYYY是在 UserDetails 类中定义的常量

4

1 回答 1

2

这个问题显然与session_start()您明确表示它在您明确设置数组键时有效。

您必须按照以下步骤确定问题所在:

  1. 打印UserDetails对象并确保您要检索的值已设置并确保它们是public.
  2. 打印$data以确保您在阵列中设置了正确的级别。例如,您正在引用$data[0]['title'][0],这实际上可能是$data[0]['title']

这可能只是您引用的变量/对象中的一个小错误,因为您的代码在语法上没有任何错误,因此打印此数据应该可以揭示问题所在!

请执行下列操作:

$ldap = new adLDAP();
$ldap->authenticate($username, $password);
$ldapUser = $ldap->user();
$data = $ldapUser->info($username, $this->ldapInfo);
$managerArr = explode(',', $data[0]['manager'][0]);
$managerCN = explode('=', $managerArr[0]);
$this->log->debug("Display Name = " . $data[0]['displayname'][0]);

// Print the $data array
print_r($data);

// Print the UserDetails object instance
print_r(UserDetails);

exit;
于 2013-06-25T10:02:08.597 回答