我有一些奇怪的问题,我在$_SESSION
变量中存储了一些数据。问题出在第8行和第9行之间。不知何故,数据没有存储在会话中。而且我无能为力。问题可能存在。
将$data
变量分配给会话时,它可以正常工作,但是当从$data
向会话提供某些内容时,它不起作用!但是第7行向我展示了访问$data
数组的工作原理。
问题出在哪里?
此处link是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类中定义的常量
答案 0 :(得分:2)
问题显然与session_start()
无关,因为您已明确声明在明确设置数组键时它可以正常工作。
您必须按照以下步骤确定问题所在:
UserDetails
对象,确保设置检索的值并确保它们为public
。$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;