<html>
<head>
</head>
<body>
<?php
// specify the LDAP server to connect to
$conn = ldap_connect("localhost") or die("Could not connect to server. Error
is " . ldap_error($conn));
// bind to the LDAP server
$r = ldap_bind($conn) or die("Could not bind to server. Error is " .
ldap_error($conn));
// prepare data
$info["cn"] = $_POST['cn'];
$info["sn"] = $_POST['sn'];
$info["mail"] = $_POST['mail'];
$info["objectClass"] = "inetOrgPerson";
// prepare DN for new entry
$dn = "mail=" . $_POST['mail'] . ", dc=my-domain, dc=com";
// add data to directory
$result = ldap_add($conn, $dn, $info);
// if successful, display success message
if($result)
{
echo "New entry with DN " . $dn . " added to LDAP directory."; } // else
display error
else
{
echo "An error occurred. Error number " . ldap_errno($conn) . ": " .
ldap_err2str(ldap_errno($conn)); }
// all done? clean up
ldap_close($conn);
?>
</body>
</html>
Het probleem is, dat als er een veld in het formulier leeg gelaten word ldap_add() dat niet echt leuk vind en een syntax error teruggeeft. Nu heb ik dit gevonden in het php manual om het op te lossen:
Another fun thing: ldap_add() doesn't like arrays with empty members: so
array (
[cn] = "name"
[key] = ""
[anotherkey] = "value"
)
will yield a syntax error!
solve this with a simple peice of code:
foreach ($originalobject as $key => $value){
if ($value != ""){
$object[$key] = $value;
}
}
where $originalobject is the uncecked array and $object is the one without empty members.
Alleen weet ik niet echt hoe ik dit moet implementeren. Kan iemand me hierbij helpen? Of is er nog een andere oplossing? Als je alle velden gewoon incult werkt het script gewoon, maar zodra je dus een veld leeg laat, gaat 'ie over de zeik.