I am having trouble retrieving some data out of an LDAP attribute in PHP.
I connect to LDAP, perform my query, and store the results in a var like so:
$info = ldap_get_entries($connect, $sr);
Now, I can store most of the LDAP attributes I need in sessions vars, like so:
$_SESSION['accountFirstName'] = $info[0]['givenname'][0];
$_SESSION['accountLastName'] = $info[0]['sn'][0];
$_SESSION['accountEmail'] = $info[0]['mail'][0];
These work fine.. No problems. However, there is another var I need to store. I believe It is an associative array. For some reason, no matter what I do, I am getting an NOTICE: Undefined index warning for that specific attribute. I have tried storing it like the above demonstration, but to be honest I’m not entirely sure what the [0] indices on either ends of the attribute name mean.. I’m not familiar with LDAP and frankly the setup is very confusing.
So I guess my questions are:
-
how do you access associative arrays that are returned from an LDAP
query? -
what does ‘undefined index’ mean? Does it mean that that
attribute does not exist, or it does not exist at the index provided? -
How can I test my LDAP query to see if the variable even exists?
-
There is a possibility that the account performing the query does not
have adequate LDAP access privileges (the project is for a university
and there is a lot of red tape). Is there any way for me to verify
that through code?
Thank you! And my apologies for the vagueness of the information provided, I can’t be too open-mouthed right now.
The issue doesn’t reside with the
ldap_get_entries()method, or LDAP at all – it’s the data that’s being returned.The
NOTICE: Undefined indexerror is stating that an index in your array doesn’t exist. In this case, it is most likely that the data you’re receiving doesn’t have a value such asgivennameormail, but it could also be the[0](or, “first record”) in one of those arrays.The textual/string index value, such as
givennameorsn, is what would be defined as the “associative array”. You are correctly accessing that data with$info[0]['givenname'];To check if an index exists in PHP, you can use
isset(), such as:As a quick way to do your assignments, you can use something like this:
If you have a long list of values you need, I would suggest writing something similar to the following to auto-process it for you: