CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken |
22.10.2005, 22:07:48
|
Anfänger
|
|
Registriert seit: Oct 2005
Beiträge: 5
|
|
LDAP Problem
Hallo,
Ich versuche jetzt schon 5 Stunden einen Eintrag mittels PHP in meinen LDAP hinzubekommen. Es funktioniert aber nicht. Der Code schaut folgendermaßen aus:
PHP-Code:
<?php
$ds=ldap_connect("server"); // Annahme: der LDAP Server befindet
// sich auf diesem Host
if ($ds) {
// bind mit passendem dn für aktulisierenden Zugriff
$r=ldap_bind($ds,'cn=ingAdmin, o=ing', 'pw');
$info = array();
// Daten vorbereiten
$info['givenname']='Hansids';
$info['objectclass'][0]='top';
$info['objectclass'][1]='inetOrgPerson';
$info['mail']='Mustermann@firma.de';
$info['cn']='Hansids Mustermann';
$info['ou']='Mitarbeiter';
$info['o']='ing';
$info['sn']='Mustermann';
$dn= 'cn=Hansids Mustermann,o=ing';
// hinzufügen der Daten zum Verzeichnis
$sr=ldap_add($ds, $dn, $info);
$e1=ldap_err2str($sr);
$e2=ldap_errno($sr);
echo 'Error1: $e1<br>';
echo 'Error2: $e2<br>';
ldap_close($ds);
} else {
echo "Verbindung zum LDAP Server nicht möglich!";
}
?>
Leider führt es zu keinem Erfolg. Felhlermeldungen ($e1 und $e2):
Error1: Success
Error2:
Also der Fehler müsste irgendwo in dem Script liegen. Mit dem Script "phpLDAPadmin" kann ich eintragen was ich will.
System:
openldap 2.2.19-db-4.2.52-openssl-0.9.7e
OS WinXP
PHP 5.0.3
Weiß jemand an was das liegen könnte?
Gruß Daniel
|
22.10.2005, 23:11:35
|
|
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
AW: LDAP Problem
In deinem Quellcode kann ich keinen Fehler finden. Außerdem erhälst du ja auch keiner Fehler- sondern eine Erfolgsmeldung (oder wie sollte Success sonst interpretiert werden?). Woran stellst du denn fest, dass das Hinzufügen nicht erfolgreich war?
|
22.10.2005, 23:22:09
|
Anfänger
|
|
Registriert seit: Oct 2005
Beiträge: 5
|
|
AW: LDAP Problem
Da der Eintrag nicht im Ldap vorhanden ist. :) Überprüfen kann ich das mit dem Programm LDAPBrowser oder dem phpLDAPAdmin. Ich verstehe es auch nicht wieso ich ein Success bekomme.
Gruß Daniel
|
23.10.2005, 12:28:24
|
|
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
AW: LDAP Problem
Dann kann ich dir da leider auch nicht weiterhelfen.
|
23.10.2005, 12:38:28
|
Anfänger
|
|
Registriert seit: Oct 2005
Beiträge: 5
|
|
AW: LDAP Problem
Guten Morgen,
Schade :) aber trozdem danke. Naja muss ich wohl weiter probieren. Ich probiere nun die Funktion von dem script "phpLdapAdmin" dafür zu nutzen. Mal sehen ob ich des in meine bestehende eingabe einbauen kann.
Gruß Daniel
|
23.10.2005, 13:08:37
|
|
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
AW: LDAP Problem
Kann es vielleicht auch sein, dass der Eintrag an einer anderen Position im Verzeichnisbaum erfolgt als du eigentlich erwartest?
|
23.10.2005, 13:23:30
|
Anfänger
|
|
Registriert seit: Oct 2005
Beiträge: 5
|
|
AW: LDAP Problem
Eigentlich nicht. Wenn ich das LDAP-Verzeichiss durchsuche finde ich nur meinen einen Testeintrag. Aber es kann natürlich sein, dass ich da irgendwelche falschen angaben mache in dem Code oben. Kenne mich zwar etwas mit PHP aus aber die Funktionen von LDAP sind mir neu.
Ich habe ein zentrale Adressdatenbank (mySQL) und will nun beim Eintragen einer neuen Adresse auch gleich die E-Mailaddy und Namen an den LDAP übergeben. Ich könnte ja schon die Funktion von dem "phpLDAPadmin" nutzen, bloß da müsste ich ein Form ohne drücken des Buttons abschicken. Und da hängt es nun :) Vielleicht hast du ja dafür ne Lösung parat.
Hier mal das Formular:
HTML-Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Unbenanntes Dokument</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">
window.setTimeout('abschicken()', 5);
function abschicken()
{
document.forms['test'].submit();
}
</script>
</head>
<body>
<form action="create.php" method="post" name="test">
<input type="hidden" name="server_id" value="1" />
<input type="hidden" name="new_dn" value="cn=Hansi Mustermann,ou=Mitarbeiter,o=ing" />
<input type="hidden" name="form[givenName]" value="Hansi" />
<input type="hidden" name="form[sn]" value="Mustermann" />
<input type="hidden" name="form[cn]" value="Hansi Mustermann" />
<input type="hidden" name="form[street]" value="" />
<input type="hidden" name="form[o]" value="" />
<input type="hidden" name="form[l]" value="" />
<input type="hidden" name="form[st]" value="" />
<input type="hidden" name="form[postalCode]" value="" />
<input type="hidden" name="form[telephoneNumber]" value="" />
<input type="hidden" name="form[mobile]" value="" />
<input type="hidden" name="form[facsimileTelephoneNumber]" value="" />
<input type="hidden" name="form[mail]" value="" />
<input type="hidden" name="object_classes" value="a%3A1%3A%7Bi%3A0%3Bs%3A13%3A%22inetOrgPerson%22%3B%7D" />
<input type="hidden" name="container" value="ou=Mitarbeiter,o=ing" />
<input type="hidden" name="attrs[]" value="givenName" />
<input type="hidden" name="vals[]" value="Hansi" />
<input type="hidden" name="attrs[]" value="sn" />
<input type="hidden" name="vals[]" value="Mustermann" />
<input type="hidden" name="attrs[]" value="cn" />
<input type="hidden" name="vals[]" value="Hansi Mustermann" />
<input type="hidden" name="nextpage" value="0" />
<input type="hidden" name="page" value="3" />
<input type="hidden" name="template" value="inetOrgPerson" />
<input type="submit" name='submit' value="Erzeuge einen neuen Eintag" />
</form>
</body>
</html>
Gruß Daniel
|
23.10.2005, 13:29:18
|
|
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
AW: LDAP Problem
Mit dem Formular an sich, kann man natürlich nicht so viel anfangen. Interessant wäre es jetzt zu sehen, wie die Daten in der Datei create.php verarbeitet werden.
|
23.10.2005, 13:38:30
|
Anfänger
|
|
Registriert seit: Oct 2005
Beiträge: 5
|
|
AW: LDAP Problem
Ich kann gerne mal die create.php posten aber die alleine wird vielleicht nicht viel helfen,da darin noch weitere Seiten included werden.
PHP-Code:
<?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/create.php,v 1.43 2005/09/25 16:11:44 wurley Exp $
/**
* Creates a new object.
*
* Variables that come in via common.php
* - server_id
* Variables that come in as POST vars:
* - new_dn
* - attrs (an array of attributes)
* - vals (an array of values for the above attrs)
* - required_attrs (an array with indices being the attributes,
* and the values being their respective values)
* - object_classes (rawurlencoded, and serialized array of objectClasses)
*
* @package phpLDAPadmin
*/
/**
* @todo: posixgroup with empty memberlist generates an error.
*/
require './common.php';
if ($ldapserver->isReadOnly())
pla_error($lang['no_updates_in_read_only_mode']);
if (! $ldapserver->haveAuthInfo())
pla_error($lang['not_enough_login_info']);
$new_dn = isset( $_POST['new_dn'] ) ? $_POST['new_dn'] : null;
$required_attrs = isset( $_POST['required_attrs'] ) ? $_POST['required_attrs'] : false;
$object_classes = unserialize( rawurldecode( $_POST['object_classes'] ) );
$redirect = isset( $_POST['redirect'] ) ? $_POST['redirect'] : false;
$encoded_dn = rawurlencode( $new_dn );
$container = get_container( $new_dn );
// See if there are any presubmit values to work out.
if (isset($_POST['presubmit']) && count($_POST['presubmit']) && isset($_POST['template'])) {
$templates = new Templates($ldapserver->server_id);
$template = $templates->GetTemplate($_POST['template']);
foreach ($_POST['presubmit'] as $attr) {
$_POST['attrs'][] = $attr;
$_POST['form'][$attr] = $templates->EvaluateDefault($ldapserver,$template['attribute'][$attr]['presubmit'],$_POST['container']);
$_POST['vals'][] = $_POST['form'][$attr];
}
# @todo: This section needs to be cleaned up, and will be when the old templates are removed. In the mean time...
# Rebuild the $_POST['attrs'] & $_POST['vals'], as they can be inconsistent.
unset($_POST['attrs']);
unset($_POST['vals']);
foreach ($_POST['form'] as $attr => $val) {
$_POST['attrs'][] = $attr;
$_POST['vals'][] = $val;
}
}
$vals = isset( $_POST['vals'] ) ? $_POST['vals'] : array();
$attrs = isset( $_POST['attrs'] ) ? $_POST['attrs'] : array();
// build the new entry
$new_entry = array();
if( isset( $required_attrs ) && is_array( $required_attrs ) ) {
foreach( $required_attrs as $attr => $val ) {
if( $val == '' )
pla_error( sprintf( $lang['create_required_attribute'], htmlspecialchars( $attr ) ) );
$new_entry[ $attr ][] = $val;
}
}
if( isset( $attrs ) && is_array( $attrs ) ) {
foreach( $attrs as $i => $attr ) {
if( is_attr_binary( $ldapserver, $attr ) ) {
if( isset( $_FILES['vals']['name'][$i] ) && $_FILES['vals']['name'][$i] != '' ) {
// read in the data from the file
$file = $_FILES['vals']['tmp_name'][$i];
$f = fopen( $file, 'r' );
$binary_data = fread( $f, filesize( $file ) );
fclose( $f );
$val = $binary_data;
$new_entry[ $attr ][] = $val;
}
} else {
if (is_array($vals[$i])) {
# If the array has blank entries, then ignore them.
foreach ($vals[$i] as $value) {
# $new_entry[$attr] = $vals[$i];
if (trim($value))
$new_entry[$attr][] = $value;
}
} else {
$val = isset( $vals[$i] ) ? $vals[$i] : '';
if( '' !== trim($val) )
$new_entry[ $attr ][] = $val;
}
}
}
}
$new_entry['objectClass'] = $object_classes;
if( ! in_array( 'top', $new_entry['objectClass'] ) )
$new_entry['objectClass'][] = 'top';
foreach( $new_entry as $attr => $vals ) {
// Check to see if this is a unique Attribute
if( $badattr = checkUniqueAttr( $ldapserver, $new_dn, $attr, $vals ) ) {
$search_href = sprintf('search.php?search=true&form=advanced&server_id=%s&filter=%s=%s',
$ldapserver->server_id,$attr,$badattr);
pla_error(sprintf( $lang['unique_attr_failed'],$attr,$badattr,$new_dn,$search_href ) );
}
if( ! is_attr_binary( $ldapserver, $attr ) )
if( is_array( $vals ) )
foreach( $vals as $i => $v )
$new_entry[ $attr ][ $i ] = $v;
else
$new_entry[ $attr ] = $vals;
}
//echo "<pre>"; var_dump( $new_dn );print_r( $new_entry ); echo "</pre>";
// Check the user-defined custom call back first
if( true === run_hook ( 'pre_entry_create', array ( 'server_id' => $ldapserver->server_id,'dn' => $new_dn,'attrs' => $new_entry ) ) )
$add_result = @ldap_add( $ldapserver->connect(), $new_dn, $new_entry );
else {
pla_error( $lang['create_could_not_add'] );
exit;
}
if( $add_result ) {
run_hook ( 'post_entry_create', array ( 'server_id' => $ldapserver->server_id, 'dn' => $new_dn, 'attrs' => $new_entry ) );
if ($redirect)
$redirect_url = $redirect;
else
$redirect_url = sprintf('edit.php?server_id=%s&dn=%s',$ldapserver->server_id,rawurlencode($new_dn));
if( array_key_exists( 'tree', $_SESSION ) ) {
$tree = $_SESSION['tree'];
$tree_icons = $_SESSION['tree_icons'];
if( isset( $tree[$ldapserver->server_id][$container] ) ) {
$tree[$ldapserver->server_id][$container][] = $new_dn;
sort( $tree[$ldapserver->server_id][$container] );
$tree_icons[$ldapserver->server_id][$new_dn] = get_icon( $ldapserver, $new_dn );
}
$_SESSION['tree'] = $tree;
$_SESSION['tree_icons'] = $tree_icons;
session_write_close();
}
?>
<html>
<head>
<?php if (isset($tree[$ldapserver->server_id][$container]) || in_array($new_dn,$ldapserver->getBaseDN())) { ?>
<!-- refresh the tree view (with the new DN renamed)
and redirect to the edit_dn page -->
<script language="javascript">
parent.left_frame.location.reload();
location.href='<?php echo $redirect_url; ?>';
</script>
<?php } ?>
<meta http-equiv="refresh" content="0; url=<?php echo $redirect_url; ?>" />
</head>
<body>
<?php echo $lang['redirecting'] ?> <a href="<?php echo $redirect_url; ?>"><?php echo $lang['here']?></a>.
</body>
</html>
<?php } else {
pla_error( $lang['create_could_not_add'], ldap_error( $ldapserver->connect() ), ldap_errno( $ldapserver->connect() ) );
}
?>
Aber einen Erfolg habe ich nun schon :) Mein Frormular wird nun automatisch abgeschickt und trägt nun alles in den LDAP ein.
(Mein Fehler oben war, das ich das Java-script am ende des Forms einfügen musste.) Dabei benutze ich nun halt die Funktionen von dem phpLDAPAdmin. Is zwar ein umweg aber es geht =)
Gruß Daniel
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Ansicht |
Linear-Darstellung
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 13:33:58 Uhr.
|