PHP不会在$ _SESSION中存储字符串

时间:2013-06-25 09:46:21

标签: php session

我有一些奇怪的问题,我在$_SESSION变量中存储了一些数据。问题出在第8行和第9行之间。不知何故,数据没有存储在会话中。而且我无能为力。问题可能存在。

$data变量分配给会话时,它可以正常工作,但是当从$data向会话提供某些内容时,它不起作用!但是第7行向我展示了访问$data数组的工作原理。

问题出在哪里?

此处linkprint_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::sessionInfoNameUserDetails::sessionInfoXXXXYYYY是UserDetails类中定义的常量

1 个答案:

答案 0 :(得分:2)

问题显然与session_start()无关,因为您已明确声明在明确设置数组键时它可以正常工作。

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

  1. 打印UserDetails对象,确保设置检索的值并确保它们为public
  2. 打印$data以确保您在阵列中设置了正确的级别。例如,您引用的是$data[0]['title'][0],实际上可能是$data[0]['title']
  3. 这可能只是您引用的变量/对象中的一个小错误,因为您的代码在语法上没有任何错误,因此打印此数据应该可以揭示问题所在!

    执行以下操作:

    $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;