Call to undefined function
Ik roep vanuit een while() statement een functie aan. Echter ik krijg steeds de foutmelding "Call to undefined function". Hier is mijn script:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?
if (isset($_GET['menu']) and $_GET['menu']=="controle") {
$aantal = count($_SESSION['directreports']);
$i=0;
while ($i <= ($aantal - 1)) {
echo "ID: "; echo $i; echo "<BR>";
echo $_SESSION['directreports'][$i];
echo "<BR>";
echo get_value1($i);
echo "<BR>";
$i++;
}
function get_value1($i) {
$domeinserver = "XX";
$domein = "XX";
$usergroep = "OU=XX,DC=XX,DC=XX";
$base_dn = "DC=XX,DC=XX";
$filter = "sAMAccountName=".$_SESSION['directreports'][$i];
$ds=ldap_connect($domeinserver);
ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ds, LDAP_OPT_REFERRALS, 0);
$r = @ldap_bind($ds, $domein."\\".$_SESSION['loginname'], $_SESSION['password']);
if ($r) {
$read = ldap_search($ds, $base_dn, $filter) or exit(">>Unable to search ldap server<<");
$info = ldap_get_entries($ds, $read);
$info_bin = ldap_first_entry($ds, $read);
$info_bin = ldap_get_values_len($ds, $info_bin, 'objectguid');
$info_bin = bin2hex($info_bin[0]);
ldap_close($ds);
return $info_bin;
}
}
?php>
Heeft iemand een suggestie waarom ik de functie niet kan aanroepen?
Alvast bedankt,
Wim
if (isset($_GET['menu']) and $_GET['menu']=="controle") {
$aantal = count($_SESSION['directreports']);
$i=0;
while ($i <= ($aantal - 1)) {
echo "ID: "; echo $i; echo "<BR>";
echo $_SESSION['directreports'][$i];
echo "<BR>";
echo get_value1($i);
echo "<BR>";
$i++;
}
function get_value1($i) {
$domeinserver = "XX";
$domein = "XX";
$usergroep = "OU=XX,DC=XX,DC=XX";
$base_dn = "DC=XX,DC=XX";
$filter = "sAMAccountName=".$_SESSION['directreports'][$i];
$ds=ldap_connect($domeinserver);
ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ds, LDAP_OPT_REFERRALS, 0);
$r = @ldap_bind($ds, $domein."\\".$_SESSION['loginname'], $_SESSION['password']);
if ($r) {
$read = ldap_search($ds, $base_dn, $filter) or exit(">>Unable to search ldap server<<");
$info = ldap_get_entries($ds, $read);
$info_bin = ldap_first_entry($ds, $read);
$info_bin = ldap_get_values_len($ds, $info_bin, 'objectguid');
$info_bin = bin2hex($info_bin[0]);
ldap_close($ds);
return $info_bin;
}
}
?php>
Heeft iemand een suggestie waarom ik de functie niet kan aanroepen?
Alvast bedankt,
Wim
Die die functie is zo geheim dat je niet wilt vertellen welke dat is?
Gebruik sowieso geen foutonderdrukking met @ (haal die @ dus weg).
Verzin ook duidelijke namen voor je functies.
De functie haalt uit de Active Directory een aantal waarden op die ik in mijn script nodig heb.
Ik zal de @ weghalen, en dan nog eens kijken, maar lijkt me als het daar aan zou liggen dat er een andere melding zou moeten komen. Ik gebruik dezelfde ldap query op een andere plek, maar dan voor een andere waarde en dat werkt wel. Met deze waarde werkt hij ook, dat heb ik ook uitgetest.
De naam van de functie zal ik ook wijzigen, hij had nu deze naam omdat ik nog aan het testen was.
Gewijzigd op 28/02/2011 10:25:45 door Wim Smit
Heb je die dan geinclude o.i.d.?
Zet de functie gewoon bovenin je script. Het staat nu in een if().
Ik ga het morgen even uitproberen of het lukt om het boven in mijn script te zetten. Ik ging er vanuit omdat de if() nog steeds zou gelden de functie daar wel kon blijven staan. Maar de moeite van het proberen waard, bedankt voor de suggestie. :)
Toevoeging op 01/03/2011 08:42:50:
Ik heb de functie zojuist uit de if() gehaald. Het werkt nu als een zonnetje.
Bedankt voor het attent maken hierop!