Is it possible to connect to an LDAP server with ldap_connect() then
store the resulting resource handle in the session variable $SESSION[]?
I'm hoping to avoid re-connecting and re-binding every time the user
clicks on something.
It does not appear to be saving my LDAP connection handle along with
the other $SESSION variables I'm successfully storing.
The relevant code fragments in execution order are from an
Authentication function:
session_start();
$ldapConn = ldap_connect($confLdapServer)
or die("Cannot connect to LDAP server=$confLdapServer");
ldap_bind($ldapConn, $ldapDN, $password)
or die("Could not do authenticated bind to LDAP server='$confLdapServer'"
." with password='$password' and dn='$ldapDN'");
$_SESSION['username'] = $username;
$_SESSION['ldapConn'] = $ldapConn;
$_SESSION['ldapDN'] = $ldapDN;
When I return to the page after authenticating $_SESSION['ldapConn']
is zero. The other session variables are fine.
I can see them in the session serialized under tmp:
... ldapConn|i:0; ...
Oops, I didn't see this bit the first 37 times I read the manual on
Sessions, I only looked at the top level "Session handling functions";
I just noticed the following buried under session_register():
http://us3.php.net/function.session-register
Note: It is currently impossible to register resource variables in a
session. For example, you cannot create a connection to a database
and store the connection id as a session variable and expect the
connection to still be valid the next time the session is restored.
PHP functions that return a resource are identified by having a
return type of resource in their function definition. A list of
functions that return resources are available in the resource types
appendix.
That appendix explicitly lists ldap_connect()'s resource handle.
So it sounds like I have to ldap_connect() and ldap_bind() every time
the user clicks on my PHP app. Ouch.
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php