File: ldap.xml

package info (click to toggle)
phpdoc 20020310-1
  • links: PTS
  • area: main
  • in suites: woody
  • size: 35,272 kB
  • ctags: 354
  • sloc: xml: 799,767; php: 1,395; cpp: 500; makefile: 200; sh: 140; awk: 51
file content (2070 lines) | stat: -rw-r--r-- 72,770 bytes parent folder | download
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
<?xml version="1.0" encoding="iso-8859-1"?>
<reference id="ref.ldap">
 <title>LDAP Funktionen</title>
  <titleabbrev>LDAP</titleabbrev>

  <partintro>
   <sect1 id="ldap.intro">
   <title>Einfhrung zu LDAP</title>
    <para>
     LDAP steht fr Lightweight Directory Access Protocol und ist
     ein Protokoll um auf "Directory Servers" - "Verzeichnis-
     Server" - zuzugreifen.
     Das Verzeichnis ist dabei eine spezielle Art einer Datenbank,
     das Informationen in einer Baumstruktur bereithlt.
    </para>
    <para>
     Das Konzept ist dabei hnlich der Verzeichnisstruktur Ihrer
     Festplatte, mit der Ausnahme, da in diesem Zusammenhang
     das Wurzelverzeichnis "Die Welt" ist und die
     Unterverzeichnisse der ersten Ebene "Lnder" abbilden.
     Die weiteren Verzeichnisse unterhalb der Lnderebene enthalten
     Eintrge fr Firmen, Organisationen oder Stdte. Noch tiefer
     geschachtelt stehen Verzeichniseintrge fr Menschen und
     vielleicht fr Ausstattung oder Dokumente.
    </para>
    <para>
     Um auf eine Datei in einem Unterverzeichnis auf Ihrer
     Festplatte zu verweisen, knnten Sie eine Schreibweise wie
     folgt verwenden
     </para>
    <literallayout>
    /usr/local/meine_daten/doku
    </literallayout>
    <para>
     Die Schrgstriche markieren jeden Teil in diesem Verweis und
     die Sequenz wird von links nach rechts gelesen.
    </para>
    <para>
     Das entsprechende Gegenstck zu einer voll qualifizierten
     Dateireferenz ist in LDAP der "Eindeutige Name"
     ("distinguished name"), der Einfachheit halber als "dn"
     bezeichnet.
     Ein Beispiel fr einen solchen dn knnte sein
    </para>
    <literallayout>
    cn=Hans Mustermann,ou=Buchhaltung,o=Meine Firma,c=DE
    </literallayout>
    <para>
     Das Komma markiert jeden Teil in diesem Verweis und die
     Sequenz wird von rechts nach links gelesen.
     Diesen dn wrden Sie wie folgt lesen ...
    </para>
    <literallayout>
    Land = DE
    Organisation (organisation) = Meine Firma
    Organisationseinheit (organisational unit) = Buchhaltung
    Einfacher Name (commonName) = Hans Mustermann
    </literallayout>
    <para>
     In der gleichen Weise, in der es keine allgemeinverbindlichen
     Regeln gibt, wie Sie die Verzeichnisstruktur Ihrer Festplatte
     organsieren, kann der Verwalter eines Verzeichnis-Servers jede
     beliebige Struktur implementieren, die fr den Einsatzzweck
     sinnvoll ist.
     Trotzdem gibt es einige Konventionen die benutzt werden.
     Die Botschaft ist folgende: Sie knnen keinen Code schreiben
     um auf einen Verzeichnis-Server zuzugreifen, ohne etwas ber
     dessen Struktur zu wissen. Genauso wenig knnen Sie eine
     Datenbank nutzen ohne Kenntnis darber, was in derselben
     vorhanden ist.
    </para>
   </sect1>

<sect1 id="ldap-example">
<title>Komplettes Code Beispiel</title>
    <para>
     Informationen von einem Verzeichnis-Server beziehen fr alle
     Eintrge bei denen der Nachname mit "S" beginnt. Darstellung
     eines Auszugs mit Name und Email-Adresse.
    </para>

    <example>
    <title>LDAP Such-Beispiel</title>
    <programlisting role="php">
<![CDATA[
<?php
    // Grundlegende Abfolge bei LDAP ist verbinden, binden, suchen,
    // interpretieren des Sucheergebnisses, Verbindung schlieen

    echo "<h3>LDAP query Test</h3>";
    echo "Verbindung ...";
    $ds=ldap_connect("localhost");  // muss ein gltiger LDAP Server
                                    // sein!

    echo "Ergebnis der Verbindung: ".$ds."<p>";

    if ($ds) {
    echo "Bindung ...";
    $r=ldap_bind($ds);     // das ist ein "anonymer" bind,
                           // typischerweise nur Lese Zugriff
    echo "Ergebnis der Bindung ".$r."<p>";

    echo "Suche nach (sn=S*) ...";
    // Suchen des Nachnamen-Eintrags
    $sr=ldap_search($ds,"o=Meine Firma, c=DE", "sn=S*");
    echo "Ergebnis der Suche ".$sr."<p>";

    echo "Anzahl gefundenen Eintrge ".ldap_count_entries($ds,$sr)."<p>";

    echo "Eintrge holen ...<p>";
    $info = ldap_get_entries($ds, $sr);
    echo "Daten fr ".$info["count"]." Items gefunden:<p>";

    for ($i=0; $i<$info["count"]; $i++) {
        echo "dn ist: ". $info[$i]["dn"] ."<br>";
        echo "erster cn Eintrag: ". $info[$i]["cn"][0] ."<br>";
        echo "erster email Eintrag: ". $info[$i]["mail"][0] ."<p>";
    }

    echo "Verbindung schlieen";
    ldap_close($ds);

} else {
    echo "<h4>Verbindung zu LDAP Server nicht mglich</h4>";
}
?>
]]>
    </programlisting>
    </example>

   <sect2 id="ldap.using">
    <title>Verwenden der PHP LDAP Aufrufe</title>
     <para>
      Sie mssen sich die LDAP Client Bibliotheken herunterladen und
      bersetzen. Sie knnen entweder das ldap-3.3 Packet von der
      University of Michigan oder das Netscape Directory SDK 3.0
      verwenden. Ebenso mssen Sie Ihr PHP mit LDAP Untersttzung
      aktiviert neu bersetzen bevor die PHP LDAP-Aufrufe
      funktionieren.
     </para>
     <para>
      Bevor Sie die LDAP Aufrufe benutzen knnen, mssen Sie folgendes
      wissen...
     <itemizedlist>
      <listitem>
       <para>
        Den Namen oder die Adresse des Verzeichnis-Servers den Sie
        benutzen wollen
      </para>
      </listitem>
      <listitem>
       <para>
        Den "Basis dn" des Servers (den Teil des Weltverzeichnisses,
        das auf diesem Server eingerichtet ist, das knnte "o=Meine
        Firma,c=DE" sein.
       </para>
      </listitem>
      <listitem>
       <para>
        Brauchen Sie ein Passwort um auf den Server zuzugreifen?
        (Viele Server bieten Lesezugriff fr einen "anonymen bind",
        verlangen aber ein Passwort fr alles weitere)
       </para>
      </listitem>
     </itemizedlist>
    </para>
    <para>
     Die typische Abfolge von LDAP Aufrufen in einer Anwendung folgen
     diesem Muster
<literallayout>
  ldap_connect()    // Aufbau einer Verbindung zum Server

  connection to server
     |
  ldap_bind()       // anonymes oder authentifiziertes "login"
     |
  mache irgendwas, z.B. Verzeichnis durchsuchen oder aktualisieren
  und stelle das Ergebnis dar
     |
  ldap_close()      // "logout"
</literallayout>
</para>
   </sect2>

   <sect2 id="ldap.moreinfo">
   <title>Mehr Informationen</title>
    <para>
     Viele Informationen finden Sie unter
    </para>

    <itemizedlist>
     <listitem>
      <para>
       <ulink url="&url.ldap.netscape;">Netscape</ulink>
      </para>
     </listitem>
     <listitem>
      <para>
       <ulink url="&url.ldap.michigan;">University of Michigan</ulink>
      </para>
     </listitem>
     <listitem>
      <para>
       <ulink url="&url.ldap.openldap;">OpenLDAP Project</ulink>
      </para>
     </listitem>
     <listitem>
      <para>
       <ulink url="&url.ldap.ldapworld;">LDAP World</ulink>
      </para>
     </listitem>
    </itemizedlist>

    <para>
     Das Netscape SDK enthlt einen hilfreichen Programmers Guide im
     .html Format.
    </para>
   </sect2>
  </sect1>

  </partintro>


  <refentry id="function.ldap-add">
   <refnamediv>
    <refname>ldap_add</refname>
    <refpurpose>
     Eintrge einem LDAP Verzeichnis hinzufgen
    </refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
     <methodsynopsis>
      <type>int</type><methodname>ldap_add</methodname>
      <methodparam><type>int</type><parameter>Verbindungs-Kennung</parameter></methodparam>
      <methodparam><type>string</type><parameter>dn</parameter></methodparam>
      <methodparam><type>array</type><parameter>eintrag</parameter></methodparam>
     </methodsynopsis>
    <para>
     Rckgabewert: &return.success;
    </para>
    <para>
     Die <function>ldap_add</function> Funktion wird benutzt um
     Eintrge einem Verzeichnis hinzuzufgen. Die DN des Eintrags, der
     hinzugefgt werden soll wird durch <parameter>dn</parameter> bestimmt.
     Das Array <parameter>eintrag</parameter> bestimmt die Informationen
     des Eintrags. Die Werte in den Eintrgen werden durch individuelle
     Merkmale indiziert. Im Fall von mehreren Werten fr ein Merkmal werden
     diese durch die Verwendung von Zahlen indiziert, die bei 0 beginnen.
    </para>
    <informalexample>
<literallayout>
    eintrag["merkmal1"] = wert
    eintrag["merkmal2"][0] = wert1
    eintrag["merkmal2"][1] = wert2
</literallayout>
     </informalexample>
     <example>
      <title>Komplettes Beispiel mit authentifiziertem bind</title>
      <programlisting role="php">
<![CDATA[
<?php
$ds=ldap_connect("localhost");  // Annahme: der LDAP Server befindet
                                // sich auf diesem Host

if ($ds) {
    // bind mit passendem dn fr aktulisierenden Zugriff
    $r=ldap_bind($ds,"cn=root, o=Meine Firma, c=DE", "geheim");

    // Daten vorbereiten
    $info["cn"]="Hans Mustermann";
    $info["sn"]="Mustermann";
    $info["mail"]="MustermannH@firma.de";
    $info["objectclass"]="person";

    // hinzufgen der Daten zum Verzeichnis
    $r=ldap_add($ds, "cn=Hans Mustermann, o=Meine Firma, c=DE", $info);

    ldap_close($ds);
} else {
    echo "Verbindung zum LDAP Server nicht mglich!";
}
?>
]]>
      </programlisting>
     </example>
   </refsect1>
  </refentry>


  <refentry id="function.ldap-bind">
   <refnamediv>
    <refname>ldap_bind</refname>
    <refpurpose>Bindung zu einem LDAP Verzeichnis</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
     <methodsynopsis>
      <type>int</type><methodname>ldap_bind</methodname>
      <methodparam><type>int</type><parameter>Verbindungs-Kennung</parameter></methodparam>
      <methodparam choice="opt"><type>string</type><parameter>bind_rdn
      </parameter></methodparam>
      <methodparam choice="opt"><type>string</type><parameter>bind_kennwort
      </parameter></methodparam>
     </methodsynopsis>
    <para>
     Bindung fr ein LDAP Verzeichnis mit angegebenem RDN und
     Kennwort. &return.success;
    </para>
    <para>
     Die <function>ldap_bind</function> Funktion fhrt eine bind
     Operation auf einem Verzeichnis aus. Die Parameter
     <parameter>bind_rdn</parameter> und
     <parameter>bind_kennwort</parameter> sind optional, wenn diese
     fehlen wird ein anonymes bind versucht.
     </para>
   </refsect1>
  </refentry>


  <refentry id="function.ldap-close">
   <refnamediv>
    <refname>ldap_close</refname>
    <refpurpose>Verbindung zum LDAP Server schliessen</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
     <methodsynopsis>
      <type>int</type><methodname>ldap_close</methodname>
      <methodparam><type>int</type><parameter>Verbindungs-Kennung</parameter></methodparam>
     </methodsynopsis>
    <para>
     &return.success;
    </para>
    <para>
     Die <function>ldap_close</function> Funktion schliet die
     Verbindung zum LDAP Server die zur
     <parameter>Verbindungs-Kennung</parameter> gehrt.
    </para>
    <para>
     Der Aufruf dieser Funktion ist intern identisch zu
     <function>ldap_unbind</function>. Die LDAP API benutzt den Aufruf
     <function>ldap_unbind</function>, so dass Sie vielleicht diese
     Funktion benutzen sollten, anstatt<function>
     ldap_close</function> zu verwenden.</para>
     <note>
      <para>
       Diese Funktion ist ein Alias fr <function>ldap_unbind</function>.
      </para>
     </note>
   </refsect1>
  </refentry>


  <refentry id="function.ldap-compare">
   <refnamediv>
    <refname>ldap_compare</refname>
    <refpurpose>
     Vergleicht gefundenen Wert eines Merkmal in einem Eintrag, der
     durch Angabe von dn bestimmt wird.
   </refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
     <methodsynopsis>
      <type>int</type><methodname>ldap_compare</methodname>
      <methodparam><type>int</type><parameter>Verbindungs-Kennung</parameter></methodparam>
      <methodparam><type>string</type><parameter>dn</parameter></methodparam>
      <methodparam><type>string</type><parameter>merkmal</parameter></methodparam>
      <methodparam><type>string</type><parameter>wert</parameter></methodparam>
     </methodsynopsis>
    <simpara>
     Rckgabewert: wahr, wenn der <parameter>wert</parameter> gefunden
     wird, ansonsten &false;. Tritt ein Fehler auf, wird -1 zurckgegeben.
    </simpara>
    <para>
     <function>ldap_compare</function> vergleicht den<parameter>
     wert</parameter> eines <parameter>merkmal</parameter> mit dem
     Wert des gleichen Merkmals in dem LDAP Verzeichniseintrag der
     durch <parameter>dn</parameter> bestimmt wurde.
    </para>
    <simpara>
     Das folgende Beispiel zeigt, wie berprft wird, ob ein gegebenes
     Kennwort mit dem Kennwort bereinstimmt oder nicht, das in dem
     durch DN bestimmten Entrag gespeichert ist.
    </simpara>
    <example>
    <title>Komplettes Beispiel einer Kennwort-berprfung</title>
    <programlisting role="php">
<![CDATA[
<?php

$ds=ldap_connect("localhost");  // Annahme: der LDAP Server befindet
                                // sich auf diesem Host

if ($ds) {

    // binden
    if(ldap_bind($ds)) {

        // Daten vobereiten
        $dn = "cn=Helga Olsen, ou=Meine Einheit, o=Meine Firma, c=FI";
        $value = "Geheimes Kennwort";
        $attr = "kennwort";

        // vergleiche die Werte
        $r=ldap_compare($ds, $dn, $attr, $value);

        if ($r === -1) {
            echo "Fehler: ".ldap_error($ds);
        } elseif ($r === TRUE) {
            echo "Kennwort korrekt.";
        } elseif ($r === FALSE) {
            echo "Falsch geraten! Kennwort nicht korrekt.";
        }

    } else {
        echo "Keine Bindung zum LDAP Server mglich.";
    }

    ldap_close($ds);

} else {
    echo "Keine Verbindung zum LDAP Server mglich.";
}
?>

]]>
     </programlisting>
    </example>
    <warning>
     <para>
      <function>ldap_compare</function> kann NICHT fr Vergleiche von
      BINREN Werten benutzt werden!
     </para>
    </warning>
    <note>
     <para>
      Diese Funktion wurde in 4.0.2 hinzugefgt.
     </para>
    </note>
   </refsect1>
  </refentry>


  <refentry id="function.ldap-connect">
   <refnamediv>
    <refname>ldap_connect</refname>
    <refpurpose>Verbindung zu einem LDAP Server</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
     <methodsynopsis>
      <type>int</type><methodname>ldap_connect</methodname>
      <methodparam choice="opt"><type>string</type><parameter>hostname
      </parameter></methodparam>
      <methodparam choice="opt"><type>int</type><parameter>port</parameter></methodparam>
     </methodsynopsis>
    <para>
     Rckgabewert: Eine positive Verbindungs-Kennung im Erfolgsfall,
     &false; im Fehlerfall.
    </para>
    <para>
     Die <function>ldap_connect</function> Funktion stellt eine
     Verbindung zu einem LDAP Server auf einem bestimmten<parameter>
     hostname</parameter> und <parameter>port</parameter> her. Beide
     Argumente sind optional. Werden keine Argumente angegeben ,
     wird die Verbindungs-Kennung einer schon geffneten
     Verbindung zurckgeliefert. Wird nur der
     <parameter>hostname</parameter> angegeben, wird fr den Port der
     Standarport 389 benutzt.
    </para>
    <para>
     Bei Verwendung von OpenLDAP 2.x.x knnen Sie eine URL statt des
     Hostnamens angeben. Um LDAP mit SSL-Untersttzzung zu verwenden,
     bersetzen Sie OpenLDAP mit SSL-Untersttzung, PHP mit SSL und verwenden
     ldaps://Hostname/ als Host Argument. Das Port Argument wird bei
     der Verwendung von URLs nicht benutzt.
     </para>
     <note>
      <simpara>
       URL und SSL Untersttzung wurden in 4.0.4 hinzugefgt
      </simpara>
     </note>
   </refsect1>
  </refentry>


  <refentry id="function.ldap-count-entries">
   <refnamediv>
    <refname>ldap_count_entries</refname>
    <refpurpose>Zhlt die Anzahl der Eintrge bei einer Suche</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
     <methodsynopsis>
      <type>int</type><methodname>ldap_count_entries</methodname>
      <methodparam><type>int</type><parameter>Verbindungs-Kennung</parameter></methodparam>
      <methodparam><type>int</type><parameter>Ergebnis-Kennung</parameter></methodparam>
     </methodsynopsis>
    <para>
     Rckgabewert: Anzahl der Eintrge im Ergebnis, &false; im
     Fehlerfall.</para>
    <para>
     Die <function>ldap_count_entries</function> Funktion liefert die
     Anzahl der Eintrge im gespeicherten Ergebnis einer vorher
     durchgefhrten Suchoperation. Die
     <parameter>Ergebnis-Kennung</parameter> bezeichnet das interne
     LDAP Ergebnis.
    </para>
   </refsect1>
  </refentry>


  <refentry id="function.ldap-delete">
   <refnamediv>
    <refname>ldap_delete</refname>
    <refpurpose>Lscht einen Eintrag aus einem Verzeichnis
    </refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
     <methodsynopsis>
      <type>int</type><methodname>ldap_delete</methodname>
      <methodparam><type>int</type><parameter>Verbindungs-Kennung</parameter></methodparam>
      <methodparam><type>string</type><parameter>dn</parameter></methodparam>
     </methodsynopsis>
    <para>
     &return.success;
    </para>
    <para>
     Die <function>ldap_delete</function> Funktion lscht einen
     einzelnen Eintrag aus einem LDAP Verzeichnis, das im
     <parameter>dn</parameter> angegeben wurde.
    </para>
   </refsect1>
  </refentry>


  <refentry id="function.ldap-dn2ufn">
   <refnamediv>
    <refname>ldap_dn2ufn</refname>
    <refpurpose>
    Konvertiert DN in ein benutzerfreundliches Namensformat
    </refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
     <methodsynopsis>
      <type>string</type><methodname>ldap_dn2ufn</methodname>
      <methodparam><type>string</type><parameter>dn</parameter></methodparam>
     </methodsynopsis>
    <para>
     Die <function>ldap_dn2ufn</function> Funktion wird verwendet um
     einen DN, angegeben mit <parameter>dn</parameter>, in einer
     benutzerfreundlicheren Form darzustellen, wobei die Typen-Namen
     wegfallen.
    </para>
   </refsect1>
  </refentry>


  <refentry id="function.ldap-err2str">
   <refnamediv>
    <refname>ldap_err2str</refname>
    <refpurpose>
     Konvertiert eine LDAP Fehlernummer in einen Fehlertext
    </refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
     <methodsynopsis>
      <type>string</type><methodname>ldap_err2str</methodname>
      <methodparam><type>int</type><parameter>fehlernummer</parameter></methodparam>
     </methodsynopsis>
    <para>
     Rckgabewert: Fehlertext.</para>
    <para>
     Diese Funktion liefert den Fehlertext der die 
     <parameter>fehlernummer</parameter> erklrt.
     Whrend LDAP Fehlernummern standardisiert sind, liefern
     unterschiedliche Bibliotheken unterschiedliche oder sogar
     lokalspezifische Fehlermeldungen. Deshalb sollten Sie nie auf
     eine spezielle Fehlermeldung prfen, sondern immer eine
     Fehlernummer verwenden.
    </para>
    <para>
     Siehe auch <function>ldap_errno</function> und
     <function>ldap_error</function>.

    <example>
     <title>Aufzhlung aller LDAP Fehlermeldungen</title>
      <programlisting role="php">
<![CDATA[
<?php
  for($i=0; $i<100; $i++) {
    printf("Fehler $i: %s<br>\n", ldap_err2str($i));
  }
?>
]]>
     </programlisting>
    </example>
    </para>
   </refsect1>
  </refentry>


  <refentry id="function.ldap-errno">
   <refnamediv>
    <refname>ldap_errno</refname>
    <refpurpose>
     Liefert die LDAP Fehlernummer des letzten LDAP Kommandos
    </refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
     <methodsynopsis>
      <type>int</type><methodname>ldap_errno</methodname>
      <methodparam><type>int</type><parameter>Verbindungs-Kennung</parameter></methodparam>
     </methodsynopsis>
    <para>
     Rckgabewert: LDAP Fehlernummer des letzten LDAP Kommandos fr
     diese Verbindung.
    </para>
    <para>
     Diese Funktion liefert die standardisierte Fehlernummer des
     zuletzt ausgefhrten LDAP Kommandos fr die angegebene
     Vebindungs-Kennung. Diese Nummer kann mit der Funktion 
     <function>ldap_err2str</function> in einen Fehlertext konvertiert
     werden.
    </para>
    <para>
     Solange Sie die Stufe der Fehlerwarnungen in Ihrer php.ini nicht
     herabsetzen oder vor Ihre LDAP Komanndos ein @ (at) setzen
     um die Ausgabe von Fehlermeldungen zu unterdrcken, werden die
     aufgetretenen Fehler auch in Ihrer HTML Ausgabe zu sehen sein.
    <example>
    <title>Erzeugen und Abfangen eines Fehlers</title>
    <programlisting role="php">
<![CDATA[
<?php
// Dieses Beispiel enhlt einen Fehler, der abgefangen wird.
$ld = ldap_connect("localhost");
$bind = ldap_bind($ld);

// Syntax Fehler im Filterausdruck (errno 87),
// msste "objectclass=*" heien, um zu funktionieren.

$res =  @ldap_search($ld, "o=Meine Firma, c=DE", "objectclass");
if (!$res) {
    printf("LDAP-Fehlernummer: %s<br>\n", ldap_errno($ld));
    printf("LDAP-Fehler: %s<br>\n", ldap_error($ld));
    die("Argh!<br>\n");
}
$info = ldap_get_entries($ld, $res);
printf("%d bereinstimmende Eintrge.<br>\n", $info["count"]);
?>
]]>
     </programlisting>
    </example>
   </para>
   <para>
     Siehe auch <function>ldap_err2str</function> und
     <function>ldap_error</function>.</para>
   </refsect1>
  </refentry>


  <refentry id="function.ldap-error">
   <refnamediv>
    <refname>ldap_error</refname>
    <refpurpose>
     Liefert die LDAP Fehlermeldung des letzten LDAP Kommandos
    </refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
     <methodsynopsis>
      <type>string</type><methodname>ldap_error</methodname>
      <methodparam><type>int</type><parameter>Verbindungs-Kennung</parameter></methodparam>
     </methodsynopsis>
    <para>
     Rckgabe: Fehlertext</para>
    <para>
     Diese Funktion liefert den erklrenden Fehlertext fr einen
     Fehler, der vom zuletzt ausgefhrten LDAP Kommando mit der
     angegebenen <parameter>Verbindungs-Kennung</parameter>
     erzeugt wurde. Whrend LDAP Fehlernummern standardisiert sind,
     liefern unterschiedliche Bibliotheken unterschiedliche oder sogar
     lokalspezifische Fehlermeldungen. Deshalb sollten Sie nie auf
     eine spezielle Fehlermeldung prfen, sondern immer eine
     Fehlernummer verwenden.
    </para>
    <para>
     Solange Sie die Stufe der Fehlerwarnungen in Ihrer 
     <filename>php.ini</filename> nicht herabsetzen oder vor Ihre 
     LDAP Komanndos ein <literal>@</literal> (at) setzen,
     um die Ausgabe von Fehlermeldungen zu unterdrcken, werden die
     aufgetretenen Fehler auch in Ihrer HTML Ausgabe zu sehen sein.
    </para>
    <para>
     Siehe auch <function>ldap_err2str</function> und
     <function>ldap_errno</function>.
    </para>
   </refsect1>
  </refentry>


  <refentry id="function.ldap-explode-dn">
   <refnamediv>
    <refname>ldap_explode_dn</refname>
    <refpurpose>
     Aufteilung eines DN in seine Bestandteile
    </refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
     <methodsynopsis>
      <type>array</type><methodname>ldap_explode_dn</methodname>
      <methodparam><type>string</type><parameter>dn</parameter></methodparam>
      <methodparam><type>int</type><parameter>mit_merkmal</parameter></methodparam>
     </methodsynopsis>
    <para>
     Die <function>ldap_explode_dn</function> Funktion wird benutzt um
     einen von <function>ldap_get_dn</function> gelieferten DN
     aufzuteilen und in dessen Bestandteile zu zerlegen. Jeder Teil
     wird als Relative Distinguished Name, RDN, bezeichnet.
     <function>ldap_explode_dn</function> liefert einen Array mit
     allen diesen Bestandteilen.
     Der Parameter <parameter>mit_merkmal</parameter> wird benutzt, um
     zu bestimmen, ob die RDNs nur mit Werten oder zustlich mit ihren
     Merkmalen angefragt werden. Um RDNs mit Merkmalen (z.B. Merkmal =
     Wert Format) zu erhalten, setzen Sie <parameter>
     mit_merkmal</parameter> auf 0, um nur Werte zu erhalten auf 1.
    </para>
   </refsect1>
  </refentry>


  <refentry id="function.ldap-first-attribute">
   <refnamediv>
    <refname>ldap_first_attribute</refname>
    <refpurpose>Liefert das erste Merkmal</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
     <methodsynopsis>
      <type>string</type><methodname>ldap_first_attribute</methodname>
      <methodparam><type>int</type><parameter>Verbindungs-Kennung</parameter></methodparam>
      <methodparam><type>int</type><parameter>Ergebnis-Eintrag-Kennung</parameter></methodparam>
      <methodparam><type>int</type><parameter>ber-Kennung</parameter></methodparam>
     </methodsynopsis>
    <para>
     Rckgabewert: im Erfolgsfall das erste Merkmal des Eintrags, im
     Fehlerfall &false;.
    </para>
    <para>
     hnlich wie Eintrge lesen, werden Merkmale eines bestimmten Eintrags
     eines nach dem anderen gelesen.
     Die <function>ldap_first_attribute</function> Funktion liefert
     das erste Merkmal eines Eintrags der durch die
     <parameter>Ergebnis-Eintrag-Kennung</parameter> angegeben wurde.
     Durch erfolgreichen Aufruf von <function>ldap_next_attribute</function>
     erhalten Sie die restlichen Merkmale.
     Der Parameter <parameter>ber-Kennung</parameter> ist die Kennung
     eines internen Speicherort-Zeiger. Die bergabe erfolgt per
     Referenz. Die gleiche <parameter>ber-Kennung</parameter> wird an
     die Funktion <function>ldap_next_attribute</function>
     weitergegeben, die diesen Zeiger dann verndert.
    </para>
    <para>
     Siehe auch <function>ldap_get_attributes</function></para>
   </refsect1>
  </refentry>


  <refentry id="function.ldap-first-entry">
   <refnamediv>
    <refname>ldap_first_entry</refname>
    <refpurpose>
     Liefert die Kennung des ersten Ergebnisses
    </refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
     <methodsynopsis>
      <type>int</type><methodname>ldap_first_entry</methodname>
      <methodparam><type>int</type><parameter>Verbindungs-Kennung</parameter></methodparam>
      <methodparam><type>int</type><parameter>Ergebnis-Kennung</parameter></methodparam>
     </methodsynopsis>
    <para>
     Rckgabewert: im Erfolgsfall die Ergebnis-Eintrag-Kennung
     fr den ersten Eintrag, &false; im Fehlerfall.
    </para>
    <para>
     Eintrge eines LDAP Ergebnisses werden unter Verwendung der
     Funktionen <function>ldap_first_entry</function> und
     <function>ldap_next_entry</function> sequentiell gelesen.
     Die <function>ldap_first_entry</function> Funktion gibt die
     Eintrag-Kennung fr den ersten Eintrag im Ergebnis zurck.
     Diese Eintrag-Kennung wird dann an die Funktion
     <function>ldap_next_entry</function> weitergegeben, um sukzessiv
     die Eintrge des Ergebnisses zu erhalten.
    </para>
    <para>
     Siehe auch <function>ldap_get_entries</function>.
    </para>
   </refsect1>
  </refentry>


  <refentry id="function.ldap-free-result">
   <refnamediv>
    <refname>ldap_free_result</refname>
    <refpurpose>
     Gibt den belegten Speicher wieder frei
    </refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
     <methodsynopsis>
      <type>int</type><methodname>ldap_free_result</methodname>
      <methodparam><type>int</type><parameter>Ergebnis-Kennung</parameter></methodparam>
     </methodsynopsis>
    <para>
     &return.success;
    </para>
    <para>
     Um die Ergebnisse zu speichern, wird intern Speicher belegt.
     Diesen Speicher knnen Sie mit der Funktion
     <function>ldap_free_result</function> mir Angabe der entsprechenden
     <parameter>Ergebnis-Kennung</parameter> wieder freigeben.
     Typischerweise wird nach Beendigung des Skripts wird der gesamte
     Ergebnis-Speicher automatisch freigegeben.
    </para>
    <para>
     Falls Ihr Skript sukzessive Suchoperationen durchfhrt, die
     groe Ergebnismengen liefern, knnen Sie <function>
     ldap_free_result</function> aufrufen, um den Speicherverbrauch
     zur Laufzeit niedrig zu halten.
    </para>
   </refsect1>
  </refentry>


  <refentry id="function.ldap-get-attributes">
   <refnamediv>
    <refname>ldap_get_attributes</refname>
    <refpurpose>
     Liefert Merkmale eines Suchergebnis-Eintrags
    </refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
     <methodsynopsis>
      <type>array</type><methodname>ldap_get_attributes</methodname>
      <methodparam><type>int</type><parameter>Verbindungs-Kennung</parameter></methodparam>
      <methodparam><type>int</type><parameter>Ergebnis-Eintrag-Kennung</parameter></methodparam>
     </methodsynopsis>
    <para>
     Rckgabewert: im Erfolgsfall wird die gesamte Information eines
     Eintrags in einem multidimensionalen Array zurckgegeben; im
     Fehlerfall &false;.
    </para>
    <para>
     Die <function>ldap_get_attributes</function> Funktion
     wird verwendet um das Lesen der Merkmale und Werte eines Eintrags
     im Suchergebnis zu vereinfachen. Der Rckgabewert ist ein
     multidimensionales Array aus Merkmalen und Werten.
    </para>
    <para>
     Nachdem Sie einen bestimmten Eintrag in dem Verzeichnis
     lokalisiert haben, knnen Sie mit dieser Funktion herausfinden,
     welche Informationen fr diesen Eintrag verfgbar sind. Diese
     Funktion wrden Sie in einer Anwendung verwenden, die
     Verzeichniseintrge "durchstbert" und/oder wo Sie die Struktur
     der Verzeichniseintrge nicht kennen. In vielen Anwendungen
     suchen Sie nach einem bestimmten Merkmal wie einer email-Adresse
     oder einem Nachnamen und interessieren sich nicht dafr,
     welche anderen Daten verfgbar sind.
    </para>
    <para>
     <informalexample><literallayout>
return_value["count"] = Anzahl der Merkmale des Eintrags
return_value[0] = das erste Merkmal
return_value[n] = das n-te Merkmal

return_value["merkmal"]["count"] = Anzahl der Werte des Merkmals
return_value["merkmal"][0] = der erste Wert des Merkmals
return_value["merkmal"][i] = der i-te Wert des Merkmals
</literallayout></informalexample>

    <example>
     <title>
      Anzeigen der Liste der Merkmale fr einen ausgewhlten
      Verzeichnis-Eintrag
     </title>
     <programlisting role="php">
<![CDATA[
// $ds die Verbindungs-Kennung fr das Verzeichnis

// $sr ein gltiges Suchergebnis eines frheren Aufrufs einer der ldap
// Verzeichnis Suchfunktionen


$entry = ldap_first_entry($ds, $sr);

$attrs = ldap_get_attributes($ds, $entry);

echo $attrs["count"]." Merkmale fr diesen Eintrag:<p>";

for ($i=0; $i<$attrs["count"]; $i++)
    echo $attrs[$i]."<br>";
]]>
      </programlisting>
     </example>
    </para>
    <para>
     Siehe auch <function>ldap_first_attribute</function> und
     <function>ldap_next_attribute</function>
    </para>
   </refsect1>
  </refentry>


  <refentry id="function.ldap-get-dn">
   <refnamediv>
    <refname>ldap_get_dn</refname>
    <refpurpose>Liefert den DN eines Ergebnis-Eintrags </refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
     <methodsynopsis>
      <type>string</type><methodname>ldap_get_dn</methodname>
      <methodparam><type>int</type><parameter>Verbindungs-Kennung</parameter></methodparam>
      <methodparam><type>int</type><parameter>Ergebnis-Eintrag-Kennung</parameter></methodparam>
     </methodsynopsis>
    <para>
     Rckgabewert: im Erfolgsfall der DN des Ergebnis-Eintrags, im
     Fehlerfall &false;.
    </para>
    <para>
     Die <function>ldap_get_dn</function> Funktion wird verwendet, um
     den DN eines Eintrags im Ergebnis herauszufinden.
    </para>
   </refsect1>
  </refentry>


  <refentry id="function.ldap-get-entries">
   <refnamediv>
    <refname>ldap_get_entries</refname>
    <refpurpose>Liefert alle Ergebnis-Eintrge</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
     <methodsynopsis>
      <type>array</type><methodname>ldap_get_entries</methodname>
      <methodparam><type>int</type><parameter>Verbindungs-Kennung</parameter></methodparam>
      <methodparam><type>int</type><parameter>Ergebnis-Kennung</parameter></methodparam>
     </methodsynopsis>
    <para>
     Rckgabewert: im Erfolgsfall wird die gesamte Information des
     Ergebnisses in einem multidimensionalen Array zurckgegeben; im
     Fehlerfall &false;.
    </para>
    <para>
     Die <function>ldap_get_entries</function> Funktion wird verwendet
     um das Lesen mehrfacher Eintrge des Ergebnisses, angegeben mit
     <parameter>Ergebnis-Kennung</parameter> zu vereinfachen
     und danach werden die Merkmale und mehfachen Werte gelesen.
     Durch einen Funktionsaufruf wird die gesamte Information in einem
     multidimensionalen Array zurckgegeben. Die Struktur dieses Array
     sieht wie folgt aus.
    </para>
    <para>
     Der Merkmal-Index wird in Kleinbuchstaben umgewandelt.
     (Verzeichnis-Server unterscheiden nicht zwischen
     Gro-/Kleinschreibung hinsichtlich der Merkmake, aber der
     Unterschied ist wichtig, wenn diese Merkmale als Array-Indizes
     benutzt werden.)

    <informalexample>
<literallayout>
return_value["count"] = Anzahl der Eintrge im Ergebnis
return_value[0] : bezieht sich auf Einzelheiten des ersten Eintrags

return_value[i]["dn"] =  DN des i-ten Eintrags im Ergebnis

return_value[i]["count"] = Anzahl der Merkmale im i-ten Eintrag
return_value[i][j]       = das j-te Merkmal des i-ten Eintrags im Ergebnis

return_value[i]["merkmal"]["count"] = Anzahl der Werte fr das
                                      Merkmal im i-ten Eintrag
return_value[i]["merkmal"][j]       = der j-te Wert des Merkmals im i-ten
                                      Eintrag
</literallayout>
    </informalexample>
   </para>
   <para>
    Siehe auch <function>ldap_first_entry</function> und
    <function>ldap_next_entry</function>
   </para>
   </refsect1>
  </refentry>


  <refentry id="function.ldap-get-option">
   <refnamediv>
    <refname>ldap_get_option</refname>
    <refpurpose>
     Liefert den aktuellen Wert fr eine gegebene Option
    </refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
     <methodsynopsis>
      <type>bool</type><methodname>ldap_get_option</methodname>
      <methodparam><type>int</type><parameter>Verbindungs-Kennung</parameter></methodparam>
      <methodparam><type>int</type><parameter>option</parameter></methodparam>
      <methodparam><type>mixed</type><parameter>retval</parameter></methodparam>
     </methodsynopsis>
    <para>
     Setzt <parameter>retval</parameter> auf den Wert der gewhlten
     Option. &return.success;
    </para>
    <para>
     Der Parameter <parameter>option</parameter> kann einer der
     folgenden sein:
     LDAP_OPT_DEREF, LDAP_OPT_SIZELIMIT, LDAP_OPT_TIMELIMIT,
     LDAP_OPT_PROTOCOL_VERSION, LDAP_OPT_ERROR_NUMBER,
     LDAP_OPT_REFERRALS, LDAP_OPT_RESTART, LDAP_OPT_HOST_NAME,
     LDAP_OPT_ERROR_STRING, LDAP_OPT_MATCHED_DN. Beschrieben sind diese unter
     <ulink url="&url.ldap.openldap-c-api;">draft-ietf-ldapext-ldap-c-
     api-xx.txt</ulink>
     </para>
     <note>
      <para>
       Diese Funktion steht nur zur Verfgung, wenn Sie OpenLDAP 2.x.x
       ODER Netscape Directory SDK x.x benutzen.
       Wurde in PHP 4.0.4 hinzugefgt.
      </para>
     </note>
     <para>
     <example>
      <title>Prfen der Protokollversion</title>
      <programlisting role="php">
<![CDATA[
// $ds eine gltige Verbindungs-Kennung fr einen Verzeichnis-Server

if (ldap_get_option($ds, LDAP_OPT_PROTOCOL_VERSION, $version))
    echo "Sie benutzen die Protokollversion $version";
else
    echo "Protokollversion konnte nicht bestimmt werden";
]]>
      </programlisting>
     </example>
    </para>

     <para>
      Siehe auch <function>ldap_set_option</function>.
     </para>
   </refsect1>
  </refentry>


  <refentry id="function.ldap-get-values">
   <refnamediv>
    <refname>ldap_get_values</refname>
    <refpurpose>
     Liefert alle Werte eines Ergebnis-Eintrags
    </refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
     <methodsynopsis>
      <type>array</type><methodname>ldap_get_values</methodname>
      <methodparam><type>int</type><parameter>Verbindungs-Kennung</parameter></methodparam>
      <methodparam><type>int</type><parameter>Ergebnis-Eintrag-Kennung</parameter></methodparam>
      <methodparam><type>string</type><parameter>merkmal</parameter></methodparam>
     </methodsynopsis>
    <para>
     Rckgabewert: im Erfolgsfall ein Array der Werte des Merkmals,
     &false; im Fehlerfall.
    </para>
    <para>
     Die <function>ldap_get_values</function> Funktion wird benutzt um
     alle Werte des Merkmals eines Eintrags im Ergebnis zu lesen. Der
     Eintrag wird durch
     <parameter>Ergebnis-Eintrag-Kennung</parameter> bestimmt. Die
     Anzahl der Werte kann ber die Indexierung von "count" des
     resultierenden Arrays bestimmt werden. Der Zugriff auf einzelne Werte
     erfolgt durch einen ganzzahligen Index im Array. Der erste Indexwert
     ist 0.
    </para>
    <para>
     Da diese Funktion eine
     <parameter>Ergebnis-Eintrag-Kennung</parameter> bentigt, muss
     ein Aufruf einer der LDAP Suchfunktionen und einer der
     Funktionen, die einen einzelnen Eintrag liefern, vorausgehen.
    </para>
    <para>
     Ihre Anwendung wird entweder hart codiert sein, um bestimmte
     Merkmale (wie z.B.: "Nachname" oder "Mail") zu suchen, oder Sie
     mssen die Funktion <function>ldap_get_attributes</function>
     benutzen, um herauszufinden, welche Merkmale fr einen gegebenen
     Eintrag vorhanden sind.
    </para>
    <para>
     LDAP erlaubt mehr als einen Eintrag fr ein Merkmal, so da es
     z.B. sein kann, dass der Verzeichnis-Eintrag einer Person mehrere
     Email-Adressen enthlt, die alle mit dem Merkmal "mail"
     bezeichnet sind.

    <informalexample>
<literallayout>
return_value["count"] = Anzahl der Werte eines Merkmals
return_value[0]       = der erste Wert des Merkmals
return_value[i]       = der i-te Wert des Merkmals
</literallayout>
    </informalexample>

     <example>
      <title>
       Liste aller Werte des Merkmals "mail" fr einen Verzeichnis-
       Eintrag
      </title>
      <programlisting role="php">
<![CDATA[
// $ds gltige Verbindungs-Kennung fr einen Verzeichnis-Server

// $sr gltiges Suchergebnis eines frheren Aufrufs einer der ldap
//     Verzeichnis Suchfunktionen

// $entry gltige Eintrag-Kennung eines frheren Aufrufs einer
//        der Funktionen, die einen Verzeichnis-Eintrag zurckgeben

$values = ldap_get_values($ds, $entry,"mail");

echo $values["count"]." Email-Adressen fr diesen Eintrag.<p>";

for ($i=0; $i < $values["count"]; $i++)
    echo $values[$i]."<br>";
]]>
      </programlisting>
     </example>
    </para>

   </refsect1>
  </refentry>


  <refentry id="function.ldap-get-values-len">
   <refnamediv>
    <refname>ldap_get_values_len</refname>
    <refpurpose>
     Liefert alle binren Werte eines Ergebnis-Eintrags
    </refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
     <methodsynopsis>
      <type>array</type><methodname>ldap_get_values_len</methodname>
      <methodparam><type>int</type><parameter>Verbindungs-Kennung</parameter></methodparam>
      <methodparam><type>int</type><parameter>Ergebnis-Eintrag-Kennung</parameter></methodparam>
      <methodparam><type>string</type><parameter>merkmal</parameter></methodparam>
     </methodsynopsis>
    <para>
     Rckgabewert: im Erfolgsfall ein Array der Werte des Merkmals,
     &false; im Fehlerfall.
    </para>
    <para>
     Die <function>ldap_get_values_len</function> Funktion wird
     benutzt um alle Werte des Merkmals eines Eintrags im Ergebnis zu
     lesen. Der Eintrag wird durch
     <parameter>Ergebnis-Eintrag-Kennung</parameter> bestimmt. Die
     Anzahl der Werte kann ber die Indexierung von "count" des
     resultierenden Arrays bestimmt werden. Der Zugriff auf einzelne
     Werte erfolgt durch einen ganzzahligen Index im Array. Der erste
     Indexwert ist 0.
    </para>
    <para>
     Diese Funktion wird exakt gleich benutzt wie die
     Funktion <function>ldap_get_values</function> mit der Aussnahme,
     dass hier binre Daten statt Textdaten behandelt werden.
    </para>
    <note>
     <para>
      Diese Funktion wurde in 4.0 hinzugefgt.
     </para>
    </note>
   </refsect1>
  </refentry>


  <refentry id="function.ldap-list">
   <refnamediv>
    <refname>ldap_list</refname>
    <refpurpose>Einstufige Suche</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
     <methodsynopsis>
      <type>int</type><methodname>ldap_list</methodname>
      <methodparam><type>int</type><parameter>Verbindungs-Kennung</parameter></methodparam>
      <methodparam><type>string</type><parameter>basis_dn</parameter></methodparam>
      <methodparam><type>string</type><parameter>filter</parameter></methodparam>
      <methodparam choice="opt"><type>array</type><parameter>merkmale</parameter></methodparam>
      <methodparam choice="opt"><type>int</type><parameter>nur_merkmmale</parameter></methodparam>
      <methodparam choice="opt"><type>int</type><parameter>grenbegrenzung</parameter></methodparam>
      <methodparam choice="opt"><type>int</type><parameter>zeitbegrenzung</parameter></methodparam>
      <methodparam choice="opt"><type>int</type><parameter>deref</parameter></methodparam>
     </methodsynopsis>
    <para>
     Rckgabewert: im Erfolgsfall eine Such-Ergebnis-Kennung,im
     Fehlerfall &false;.
    </para>
    <para>
     Die <function>ldap_list</function> Funktion fhrt die Suche fr
     einen gegebenen <parameter>filter</parameter> im Verzeichnis mit
     der Reichweite von LDAP_SCOPE_ONELEVEL durch.
    </para>
    <para>
     LDAP_SCOPE_ONELEVEL bedeutet, dass die Suche nur Informationen
     liefert, die direkt unterhalb der Stufe liegen, die durch die
     Angabe des <parameter>basis_dn</parameter> im Auruf bestimmt wird.
     (Das entspricht der Eingabe von "ls", die eine Liste von Dateien und
     Verzeichnissen des aktuellen Arbeitsverzeichnisses anzeigt.)
    </para>
    <para>
     Der Aufruf dieser Funktion nimmt 5 optionale Parameter entgegen.
     Siehe die Anmerkungen zu <function>ldap_search</function>.
    <note>
     <para>
       Diese wahlfreien Parameter wurden in 4.0.2 hinzugefgt:
      <parameter>attrsonly</parameter>,
      <parameter>grenbegrenzung</parameter>,
      <parameter>zeitbegrenzung</parameter>,
      <parameter>deref</parameter>.
     </para>
    </note>

    <example>
      <title>
       Erzeugung einer Liste aller Organisationseinheiten einer
       Organisation
      </title>
      <programlisting role="php">
<![CDATA[
// $ds gltige Verbindungs-Kennung fr einen Verzeichnis-Server

$basis_dn = "o=Meine Firma, c=DE";
$nur_dieses = array("ou");

$sr=ldap_list($ds, $basis_dn, "ou=*", $nur_dieses);

$info = ldap_get_entries($ds, $sr);

for ($i=0; $i<$info["count"]; $i++)
    echo $info[$i]["ou"][0] ;
]]>
      </programlisting>
     </example>
    </para>
    <note>
     <para>
      Seit der Version 4.0.5 ist es auerdem mglich parallele Suchen
      durchzufhren. Fr Details siehe <function>ldap_search</function>.
     </para>
    </note>
   </refsect1>
  </refentry>


  <refentry id="function.ldap-modify">
   <refnamediv>
    <refname>ldap_modify</refname>
    <refpurpose>Verndern eines LDAP-Eintrags</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
     <methodsynopsis>
      <type>int</type><methodname>ldap_modify</methodname>
      <methodparam><type>int</type><parameter>Verbindungs-Kennung</parameter></methodparam>
      <methodparam><type>string</type><parameter>dn</parameter></methodparam>
      <methodparam><type>array</type><parameter>eintrag</parameter></methodparam>
     </methodsynopsis>
    <para>&return.success;</para>
    <para>
     Die <function>ldap_modify</function> Funktion wird verwendet, um
     bestehende Eintrge in einem LDAP-Verzeichnis zu ndern.
     Die Struktur des Eintrags ist die gleiche wie bei
     <function>ldap_add</function>.
    </para>
   </refsect1>
  </refentry>


  <refentry id="function.ldap-mod-add">
   <refnamediv>
    <refname>ldap_mod_add</refname>
    <refpurpose>
     Hinzufgen von Merkmalswerten zu aktuellen Merkmalen
    </refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
     <methodsynopsis>
      <type>int</type><methodname>ldap_mod_add</methodname>
      <methodparam><type>int</type><parameter>Verbindungs-Kennung</parameter></methodparam>
      <methodparam><type>string</type><parameter>dn</parameter></methodparam>
      <methodparam><type>array</type><parameter>eintrag</parameter></methodparam>
     </methodsynopsis>
    <para>&return.success;</para>
    <para>
     Diese Funktion fgt Merkmal(e) zum angegebenen <parameter>dn</parameter>
     hinzu. Die nderung wird auf der Merkmalsebene durchgefhrt im
     Gegensatz zur Objektebene. Das Hinzufgen auf der Objektebene
     wird durch die Funktion <function>ldap_add</function> geleistet.
    </para>
   </refsect1>
  </refentry>

  <refentry id="function.ldap-mod-del">
   <refnamediv>
    <refname>ldap_mod_del</refname>
    <refpurpose>
     Lschen von Merkmalswerten aktueller Merkmale
    </refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
     <methodsynopsis>
      <type>int</type><methodname>ldap_mod_del</methodname>
      <methodparam><type>int</type><parameter>Verbindungs-Kennung</parameter></methodparam>
      <methodparam><type>string</type><parameter>dn</parameter></methodparam>
      <methodparam><type>array</type><parameter>eintrag</parameter></methodparam>
     </methodsynopsis>
    <para>&return.success;</para>
    <para>
     Diese Funktion lscht ein oder mehrere Merkmale vom angegebenen
     <parameter>dn</parameter>. Die nderung wird auf der Merkmalsebene
     durchgefhrt im Gegensatz zur Objektebene. Das Lschen auf Objektebene
     wird durch die Funktion <function>ldap_delete</function> geleistet.
    </para>
   </refsect1>
  </refentry>

  <refentry id="function.ldap-mod-replace">
   <refnamediv>
    <refname>ldap_mod_replace</refname>
    <refpurpose>
     Ersetzen von Merkmalswerten mit neuen Merkmalswerten
    </refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
     <methodsynopsis>
      <type>int</type><methodname>ldap_mod_replace</methodname>
      <methodparam><type>int</type><parameter>Verbindungs-Kennung</parameter></methodparam>
      <methodparam><type>string</type><parameter>dn</parameter></methodparam>
      <methodparam><type>array</type><parameter>eintrag</parameter></methodparam>
     </methodsynopsis>
    <para>&return.success;
    </para>
    <para>
     Diese Funktion ersetzt ein oder mehrere Merkmale vom angegebenen
     <parameter>dn</parameter>. Die nderung wird auf der Merkmalsebene
     durchgefhrt im Gegensatz zur Objektebene. nderungen auf der Objektebene
     werden mit der Funktion <function>ldap_modify</function> ausgefhrt.
    </para>
   </refsect1>
  </refentry>

  <refentry id="function.ldap-next-attribute">
   <refnamediv>
    <refname>ldap_next_attribute</refname>
    <refpurpose>
     Liefert das nchste Merkmal im Ergebnis
    </refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
     <methodsynopsis>
      <type>string</type><methodname>ldap_next_attribute</methodname>
      <methodparam><type>int</type><parameter>Verbindungs-Kennung</parameter></methodparam>
      <methodparam><type>int</type><parameter>Ergebnis-Eintrag-Kennung</parameter></methodparam>
      <methodparam><type>int</type><parameter>ber_Kennung</parameter></methodparam>
     </methodsynopsis>
    <para>
     Rckgabewert: im Erfolgsfall das nchste Merkmal eines Eintrags,
     im Fehlerfall &false;.
    </para>
    <para>
     Die <function>ldap_next_attribute</function> Funktion wird
     aufgerufen, um die Merkmale eines Eintrags zu erhalten. Der
     interne Status des Zeigers wird durch die
     <parameter>ber_Kennung</parameter> bestimmt. Diese wird mittels
     Referenz an die Funktion weitergegeben. Der erste Aufruf von 
     <function>ldap_next_attribute</function>
     erfolgt mit der <parameter>Ergebnis-Eintrag-Kennung</parameter>,
     die von <function>ldap_first_attribute</function> zurckgegeben wurde.
    </para>
    <para>
     Siehe auch <function>ldap_get_attributes</function>
    </para>
   </refsect1>
  </refentry>


  <refentry id="function.ldap-next-entry">
   <refnamediv>
    <refname>ldap_next_entry</refname>
    <refpurpose>
     Liefert den nchsten Eintrag des Ergebnisses
    </refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
     <methodsynopsis>
      <type>int</type><methodname>ldap_next_entry</methodname>
      <methodparam><type>int</type><parameter>Verbindungs-Kennung</parameter></methodparam>
      <methodparam><type>int</type><parameter>Ergebnis-Eintrag-Kennung</parameter></methodparam>
     </methodsynopsis>
    <para>
     Rckgabewert: Im Erfolgsfall wird die Eintrags-Kennung fr den
     nchsten Eintrag des Ergebnisses zurckgegeben. Das Lesen der
     Eintrge wird mit <function>ldap_first_entry</function>
     gestartet.
     Wenn keine weiteren Eintrge im Ergebnis vorhanden sind wird
     &false; zurckgegeben.
    </para>
    <para>
     Die <function>ldap_next_entry</function> Funktion wird verwendet,
     um die Eintrge zu erhalten, die im Ergebnis gespeichert sind.
     Wiederholtes aufrufen von <function>ldap_next_entry</function>
     liefert einen Eintrag nach dem anderen, solange bis kein Eintrag
     mehr vorliegt. Der erste Aufruf von <function>ldap_next_entry</function>
     erfolgt nach dem Aufruf von <function>ldap_first_entry</function>
     mit der <parameter>Ergebnis-Eintrag-Kennung</parameter>, die von
     <function>ldap_first_entry</function> zurckgegeben wurde.
    </para>
    <para>
     Siehe auch <function>ldap_get_entries</function>
    </para>
   </refsect1>
  </refentry>


  <refentry id="function.ldap-read">
   <refnamediv>
    <refname>ldap_read</refname>
    <refpurpose>Lesen eines Eintrags</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
     <methodsynopsis>
      <type>int</type><methodname>ldap_read</methodname>
      <methodparam><type>int</type><parameter>Verbindungs-Kennung</parameter></methodparam>
      <methodparam><type>string</type><parameter>basis_dn</parameter></methodparam>
      <methodparam><type>string</type><parameter>filter</parameter></methodparam>
      <methodparam choice="opt"><type>array</type><parameter>merkmale</parameter></methodparam>
      <methodparam choice="opt"><type>int</type><parameter>nur_werte</parameter></methodparam>
      <methodparam choice="opt"><type>int</type><parameter>grenbegrenzung</parameter></methodparam>
      <methodparam choice="opt"><type>int</type><parameter>zeitbegrenzung</parameter></methodparam>
      <methodparam choice="opt"><type>int</type><parameter>deref</parameter></methodparam>
     </methodsynopsis>
    <para>
     Rckgabewert: Im Erfolgsfall eine Such-Ergebnis-Kennung, &false;
     im Fehlerfall.
    </para>
    <para>
     Die <function>ldap_read</function> Funktion fhrt die Suche fr
     einen gegebenen <parameter>filter</parameter> im Verzeichnis mit der
     Reichweite von LDAP_SCOPE_BASE durch. Das entpricht dem Lesen eines
     Eintrags in einem Verzeichnis.
    </para>
    <para>
     Ein leerer Filter ist nicht erlaubt. Wenn Sie wirklich alle
     Informationen fr einen Eintrag erhalten mchten, mssen Sie
     einen Filter der Art "objectClass=*" verwenden. Kennen Sie die
     Typen der Eintrge die auf dem Verzeichnis-Server benutzt werden,
     knnen Sie einen passenden Filter wie z.B."objectClass=inetOrgPerson"
     verwenden.
    </para>
    <para>
     Der Aufruf dieser Funktion nimmt 5 optionale Argumente
     entgegen. Siehe Anmerkungen zu <function>ldap_search</function>.
    </para>
    <note>
     <para>
      Diese wahlfreien Argumente wurden in 4.0.2 hinzugefgt:
      <parameter>nur_werte</parameter>,
      <parameter>grenbegrenzung</parameter>,
      <parameter>zeitbegrenzung</parameter>,
      <parameter>deref</parameter>.
     </para>
     <para>
      Seit der Version 4.0.5 ist es auerdem mglich parallele Suchen
      durchzufhren. Fr Details siehe
      <function>ldap_search</function>.
     </para>
    </note>
   </refsect1>
  </refentry>


  <refentry id="function.ldap-rename">
   <refnamediv>
    <refname>ldap_rename</refname>
    <refpurpose>
     Verndert den Namen eines Eintrags
    </refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
     <methodsynopsis>
      <type>bool</type><methodname>ldap_rename</methodname>
      <methodparam><type>int</type><parameter>Verbindungs-Kennung</parameter></methodparam>
      <methodparam><type>string</type><parameter>dn</parameter></methodparam>
      <methodparam><type>string</type><parameter>neuerrdn</parameter></methodparam>
      <methodparam><type>string</type><parameter>neueeltern</parameter></methodparam>
      <methodparam><type>bool</type><parameter>lschealtenrdn</parameter></methodparam>
     </methodsynopsis>
    <para>
     Der Eintrag, der durch <parameter>dn</parameter> gegeben ist,
     wird umbenannt/gelscht. Der neue RDN wird durch
     <parameter>neuerrdn</parameter> bestimmt, der neue Eltern-/bergeordnete
     Eintrag wird durch <parameter>neueeltern</parameter> bestimmt.
     Wenn das Argument <parameter>lschealtenrdn</parameter> &true; ist,
     wird der alte Wert/die alten Werte von RDN enfernt, andernfalls
     wird der alte Wert/die alten Werte als nicht-eindeutige(r) (non-
     distinguished) Werte des Eintrags beibehalten. &return.success;
    </para>
    <note>
     <para>Diese Funktion arbeitet zum gegenwrtigen Zeitpunkt nur mit
      LDAPv3. Sie mssen <function>ldap_set_option</function>
      vorher benutzen um fr eine Bindung LDAPv3 nutzen zu knnen.
      Diese Funktion steht nur zur Verfgung, wenn Sie OpenLDAP 2.x.x
      ODER Netscape Directory SDK x.x benutzen. Wurde in PHP 4.0.5
      hinzugefgt.
     </para>
    </note>
   </refsect1>
  </refentry>


  <refentry id="function.ldap-search">
   <refnamediv>
    <refname>ldap_search</refname>
    <refpurpose>Suche im LDAP Baum</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
     <methodsynopsis>
      <type>int</type><methodname>ldap_search</methodname>
      <methodparam><type>int</type><parameter>Verbindungs-Kennung</parameter></methodparam>
      <methodparam><type>string</type><parameter>base_dn</parameter></methodparam>
      <methodparam><type>string</type><parameter>filter</parameter></methodparam>
      <methodparam choice="opt"><type>array</type><parameter>merkmale</parameter></methodparam>
      <methodparam choice="opt"><type>int</type><parameter>nur_werte</parameter></methodparam>
      <methodparam choice="opt"><type>int</type><parameter>grenbegrenzung</parameter></methodparam>
      <methodparam choice="opt"><type>int</type><parameter>zeitbegrenzung</parameter></methodparam>
      <methodparam choice="opt"><type>int</type><parameter>deref</parameter></methodparam>
     </methodsynopsis>
    <para>
     Rckgabewert: eine Such-Ergebnis-Kennung im Erfolgsfall, &false;
     im Fehlerfall.
    </para>
    <para>
     Die <function>ldap_search</function> Funktion fhrt die Suche fr
     einen gegebenen Filter im Verzeichnis mit der Reichweite von
     LDAP_SCOPE_SUBTREE durch. Das ist quivalent zu einer Suche im
     ganzen Verzeichnis.<parameter>base_dn</parameter> legt den Basis
     DN fr das Verzeichnis fest.
    </para>
    <para>
     Der optionale vierte Parameter kann benutzt werden, um die
     Rckgabewerte des Servers so einzuschrnken, dass nur die
     tatschlich bentigten Merkmale und ihre zugehrigen Werte in der
     Ergebnismenge enthalten sind. Dieses Vorgehen ist um einiges
     effizienter als die standardmige Vorgehensweise (diese liefert
     alle Merkmale und alle zugehrigen Werte). Aus diesem Grund ist
     die Angabe des vierten Parameters als gute Praxis zu empfehlen.
    </para>
    <para>
     Der vierte Parameter ist ein Standard PHP Array aus Strings der
     bentigten Merkmale, z.B. array("mail","sn","cn"). Beachten Sie,
     dass der "dn" immer zurckgeliefert wird, ohne Rcksicht darauf,
     welche Merkmalstypen angefragt wurden.
    </para>
    <para>
     Beachten Sie weiterhin, dass manche Verzeichnis-Server so
     konfiguriert sind, dass sie nicht mehr als eine vorbestimmte
     Anzahl an Eintrgen zurckliefern. Sollte dies der Fall sein,
     zeigt Ihnen der Server an, dass nur eine Teilmenge des
     Ergebnisses zurckgeliefert wurde. Diesen Hinweis erhalten Sie
     auch, wenn Sie den sechsten Parameter
     <parameter>grenbegrenzung</parameter> mit angegeben hatten, um
     die Anzahl der angefragten Eintrge einzuschrnken.
    </para>
    <para>
     Der fnfte Parameter <parameter>nur_werte</parameter> sollte auf
     1 gesetzt werden, wenn Sie nur Merkmalstypen erhalten mchten.
     Wenn der Wert auf 0 steht, erhalten Sie sowohl Merkmalstypen als
     auch Merkmalswerte. Das ist das Standard Verhalten.
    </para>
    <para>
     Mit dem sechsten Parameter
     <parameter>grenbegrenzung</parameter> ist es mglich, die
     Anzahl der Eintrge, die Sie erhalten, zu begrenzen.
     Wenn Sie diesen Wert auf 0 setzen, bedeutet dies keine
     Beschrnkung der Ergegnismenge.
     ANMERKUNG: Dieser Parameter kann eine serverseitig gesetzte
     Beschrnkung NICHT berschreiben. Sie haben nur die Mglichkeit
     die Beschrnkung noch weiter herabzusetzen.
    </para>
    <para>
     Der siebte Parameter <parameter>zeitbegrenzung</parameter> legt
     die Zahl in Sekunden fest, die auf die Suche verwendet wird.
     Wenn Sie diesen Wert auf 0 setzen, bedeutet dies keine
     Beschrnkung der Zeit.
     ANMERKUNG: Dieser Parameter kann eine serverseitig gesetzte
     Zeitbegrenzung NICHT berschreiben. Sie haben nur die
     Mglichkeit die Beschrnkung noch weiter herabzusetzen.
    </para>
    <para>
     Der achte Parameter <parameter>deref</parameter> gibt an, wie
     Aliase whrend einer Suche behandelt werden.
     Wert kann einer der folgenden sein:
     <itemizedlist>
     <listitem>
      <simpara>
       LDAP_DEREF_NEVER - (Standard) Aliase werden nie aufgelst.
      </simpara>
     </listitem>
     <listitem>
      <simpara>
       LDAP_DEREF_SEARCHING - Aliase sollen whrend der Suche
       aufgelst werden, aber nicht dann, wenn das Basisobjekt der
       Suche ermittelt wird.
      </simpara>
     </listitem>
     <listitem>
      <simpara>
       LDAP_DEREF_FINDING - Aliase sollen aufgelst werden, wenn das
       Basisobjekt ermiitelt wird, aber nicht whrend der Suche.
      </simpara>
     </listitem>
     <listitem>
      <simpara>
       LDAP_DEREF_ALWAYS - Aliase sollen immer aufgelst werden.
      </simpara>
     </listitem>
     </itemizedlist>
    </para>
    <note>
     <para>
      Diese optionalen Parameter wurden in 4.0.2 hinzugefgt:
      <parameter>nur_werte</parameter>,
      <parameter>grenbegrenzung</parameter>,
      <parameter>zeitbegrenzung</parameter>,
      <parameter>deref</parameter>.
     </para>
    </note>
    <para>
     Der Suchfilter kann einfach oder kompliziert sein, wenn sie
     boolsche Operatoren in dem Format verwenden, wie in der LDAP
     Dokumentation beschrieben (siehe <ulink url="&url.ldap.filters;">
     Netscape Directory SDK</ulink> fr die vollstndige Information
     ber Filter).
    </para>
    <para>
     Das untenstehende Beispiel liefert die Organisationseinheit, den
     Familiennamen, den Vornamen und die Email-Addresse aller Personen
     in "Meine Firma" deren Familien- oder Vorname die Zeichenkette
     $person enhlt. In diesem Beispiel wird ein boolscher Filter
     verwendet, um den Server zu veranlassen, nach Informationen in
     mehr als einem Merkmal zu suchen.

     <example>
      <title>LDAP Suche</title>
      <programlisting role="php">
<![CDATA[
// $ds gltige Verbindungs-Kennung fr einen Verzeichnis-Server

// $person ein Teil oder der vollstndige Name einer Person, z.B. "Jo"

$dn = "o=Meine Firma, c=DE";
$filter="(|(sn=$person*)(vorname=$person*))";
$justthese = array( "ou", "sn", "vorname", "mail");

$sr=ldap_search($ds, $dn, $filter, $justthese);

$info = ldap_get_entries($ds, $sr);

print $info["count"]." gefundene Eintrge<p>";
]]>
</programlisting>
      </example>
    </para>
    <para>
     Seit der Version 4.0.5 ist es auerdem mglich parallele Suchen
     durchzufhren. Um dies zu verwirklichen benutzen Sie als erstes
     Argument einen Array von Verbindungs-Kennungen, statt einer
     einzelnen Verbindungs-Kennung. Falls Sie nicht den gleichen Basis
     DN und den gleichen Filter fr alle Suchen verwenden mchten,
     knnen Sie ebenso einen Array von Basis DNs und/oder einen Array
     von Filtern benutzen. Diese Arrays mssen die gleiche Gre wie
     das Array der Verbindungs-Kennungen haben, da die ersten Eintrge
     der Arrays fr eine Suche verwendet werden, die zweiten Eintrge
     fr eine andere Suche und so weiter. Wenn Sie parallel suchen
     erhalten Sie ein Array von Such-Ergebnis-Kennungen, auer im Fall
     eines Fehlers, dann liefert der  Eintrag zur entsprechenden Suche
     &false; zurck. Das entspricht ganz genau dem Wert der
     normalerweise zurckgeliefert wird, auer dass Sie immer eine
     Ergebnis-Kennung erhalten, wenn Sie eine Suche durchgefhrt
     haben. Es treten einige seltene Flle auf, wo eine normale Suche
     &false; zurckgibt, whrend die parallele Suche eine Kennung
     zurckliefert.
    </para>
   </refsect1>
  </refentry>


  <refentry id="function.ldap-set-option">
   <refnamediv>
    <refname>ldap_set_option</refname>
    <refpurpose>Setzt den Wert der gegebenen Option</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
     <methodsynopsis>
      <type>bool</type><methodname>ldap_set_option</methodname>
      <methodparam><type>int</type><parameter>Verbindungs-Kennung</parameter></methodparam>
      <methodparam><type>int</type><parameter>option</parameter></methodparam>
      <methodparam><type>mixed</type><parameter>neuerwert</parameter></methodparam>
     </methodsynopsis>
    <para>
     Setzt den Wert der bestimmten Option auf 
     <parameter>neuerwert</parameter>.&return.success;
    </para>
    <para>
     Der Parameter <parameter>option</parameter> kann einer der
     folgenden sein:
     LDAP_OPT_DEREF, LDAP_OPT_SIZELIMIT, LDAP_OPT_TIMELIMIT,
     LDAP_OPT_PROTOCOL_VERSION, LDAP_OPT_ERROR_NUMBER,
     LDAP_OPT_REFERRALS,
     LDAP_OPT_RESTART, LDAP_OPT_HOST_NAME, LDAP_OPT_ERROR_STRING,
     LDAP_OPT_MATCHED_DN, LDAP_OPT_SERVER_CONTROLS,
     LDAP_OPT_CLIENT_CONTROLS.
     Hier eine kurze Beschreibung, schauen Sie unter
     <ulink url="&url.ldap.openldap-c-api;">draft-ietf-ldapext-ldap-c-
     api-xx.txt</ulink> nach Details.
    </para>
    <para>
     Die Optionen LDAP_OPT_DEREF, LDAP_OPT_SIZELIMIT,
     LDAP_OPT_TIMELIMIT, LDAP_OPT_PROTOCOL_VERSION und
     LDAP_OPT_ERROR_NUMBER haben einen ganzzahligen Wert,
     LDAP_OPT_REFERRALS und LDAP_OPT_RESTART haben einen boolschen
     Wert und die Optionen LDAP_OPT_HOST_NAME, LDAP_OPT_ERROR_STRING
     und LDAP_OPT_MATCHED_DN bestehen aus einer Zeichenkette.
     Das erste Beispiel veranschaulicht deren Gebrauch. Die Optionen
     LDAP_OPT_SERVER_CONTROLS and LDAP_OPT_CLIENT_CONTROLS bentigen
     eine Kontrolliste, d.h. der Wert muss ein Array aus Kontrollen
     sein. Eine Kontrolle besteht aus einer <emphasis>oid</emphasis>
     die die Kontrolle identifiziert, einem wahlweisen <emphasis>
     wert</emphasis>, und einem wahlweisen Kennzeichen fr <emphasis>
     criticality</emphasis>. Bei PHP wird eine Kontrolle durch ein
     Array angegeben. Dieses Array enthlt ein Element mit dem
     Schlssel <emphasis>oid</emphasis> und einer Zeichenkette als
     Wert und zwei optionalen Elementen. Die optionalen Elemente sind
     Schlssel <emphasis>wert</emphasis> mit einer Zeichenkette als
     Wert und dem Schlssel <emphasis>iscritical</emphasis> mit einem
     boolschen Wert. Der vorgegebene Wert von <emphasis>
     iscritical</emphasis> ist <emphasis>&false;</emphasis> falls Sie
     nichts angeben.
     Schauen Sie sich das zweite Beispiel weiter unten an.
    </para>
    <note>
     <para>
      Diese Funktion steht nur zur Verfgung, wenn Sie OpenLDAP 2.x.x
      ODER Netscape Directory SDK x.x verwenden und wurde in PHP 4.0.4
      hinzugefgt.
      </para>
     </note>
     <para>
     <example>
      <title>Setzen der Protokollversion</title>
      <programlisting role="php">
<![CDATA[
// $ds ist eine gltige Verbindungs-Kennung fr einen Verzeichnis-
// Server
if (ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3))
    echo "Verwenden von LDAPv3";
else
    echo "Kann das Protokoll nicht auf Version 3 setzen";
]]>
</programlisting>
     </example>
     <example>
      <title>Setzen der Server Kontrollen</title>
<programlisting role="php">
<![CDATA[
// $ds ist eine gltige Verbingund-Kennung fr einen Verzeichnis-
// Server
// Kontrolle ohne Wert
$ctrl1 = array("oid" => "1.2.752.58.10.1", "iscritical" => TRUE);
// iscritical hat den vorgegebenen Wert FALSE
$ctrl2 = array("oid" => "1.2.752.58.1.10", "value" => "magic");
// Versuch, beide Kontrollen zu setzen
if (!ldap_set_option($ds, LDAP_OPT_SERVER_CONTROLS, array($ctrl1,
$ctrl2)))
    echo "Kann die Server Kontrollen nicht setzen";
]]>
</programlisting>
     </example>
     </para>
     <para>
      Siehe auch <function>ldap_get_option</function>.
     </para>
   </refsect1>
  </refentry>


  <refentry id="function.ldap-unbind">
   <refnamediv>
    <refname>ldap_unbind</refname>
    <refpurpose>Unbind von einem LDAP Verzeichnis</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
     <methodsynopsis>
      <type>int</type><methodname>ldap_unbind</methodname>
      <methodparam><type>int</type><parameter>Verbindungs-Kennung</parameter></methodparam>
     </methodsynopsis>
    <para>
     &return.success;
    </para>
    <para>
     Die <function>ldap_unbind</function> Funktion fhrt ein unbind
     auf ein LDAP Verzeichnis aus.
    </para>
   </refsect1>
  </refentry>

  <refentry id='function.ldap-8859-to-t61'>
   <refnamediv>
    <refname>ldap_8859_to_t61</refname>
    <refpurpose>
     bersetzt 8859 Zeichen nach t61 Zeichen
    </refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
     <methodsynopsis>
      <type>string</type><methodname>ldap_8859_to_t61</methodname>
      <methodparam><type>string</type><parameter>value</parameter></methodparam>
     </methodsynopsis>
    <para>
     &warn.undocumented.func;
    </para>
   </refsect1>
  </refentry>



  <refentry id='function.ldap-first-reference'>
   <refnamediv>
    <refname>ldap_first_reference</refname>
    <refpurpose>
     Liefert die erste Referenz
    </refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
     <methodsynopsis>
      <type>int</type><methodname>ldap_first_reference</methodname>
      <methodparam><type>int</type><parameter>link</parameter></methodparam>
      <methodparam><type>int</type><parameter>result</parameter></methodparam>
     </methodsynopsis>
    <para>
     &warn.undocumented.func;
    </para>
   </refsect1>
  </refentry>



  <refentry id='function.ldap-next-reference'>
   <refnamediv>
    <refname>ldap_next_reference</refname>
    <refpurpose>
     Holt die nchste Referenz
    </refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
     <methodsynopsis>
      <type>int</type><methodname>ldap_next_reference</methodname>
      <methodparam><type>int</type><parameter>link</parameter></methodparam>
      <methodparam><type>int</type><parameter>entry</parameter></methodparam>
     </methodsynopsis>
    <para>
     &warn.undocumented.func;
    </para>
   </refsect1>
  </refentry>



  <refentry id='function.ldap-parse-reference'>
   <refnamediv>
    <refname>ldap_parse_reference</refname>
    <refpurpose>
     Gewinnt Informationen aus einem Referenz-Eintrag
    </refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
     <methodsynopsis>
      <type>boolean</type><methodname>ldap_parse_reference</methodname>
      <methodparam><type>int</type><parameter>link</parameter></methodparam>
      <methodparam><type>int</type><parameter>entry</parameter></methodparam>
      <methodparam><type>array</type><parameter>referrals</parameter></methodparam>
     </methodsynopsis>
    <para>
     &warn.undocumented.func;
    </para>
   </refsect1>
  </refentry>



  <refentry id='function.ldap-parse-result'>
   <refnamediv>
    <refname>ldap_parse_result</refname>
    <refpurpose>
     Gewinnt Informationen aus einem Ergebnis
    </refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
     <methodsynopsis>
      <type>boolean</type><methodname>ldap_parse_result</methodname>
      <methodparam><type>int</type><parameter>link</parameter></methodparam>
      <methodparam><type>int</type><parameter>result</parameter></methodparam>
      <methodparam><type>int</type><parameter>errcode</parameter></methodparam>
      <methodparam><type>string</type><parameter>matcheddn</parameter></methodparam>
      <methodparam><type>string</type><parameter>errmsg</parameter></methodparam>
      <methodparam><type>array</type><parameter>referrals</parameter></methodparam>
     </methodsynopsis>
    <para>
     &warn.undocumented.func;
    </para>
   </refsect1>
  </refentry>



  <refentry id='function.ldap-set-rebind-proc'>
   <refnamediv>
    <refname>ldap_set_rebind_proc</refname>
    <refpurpose>
     Set a callback function to do re-binds on referral chasing.
    </refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
     <methodsynopsis>
      <type>int</type><methodname>ldap_set_rebind_proc</methodname>
      <methodparam><type>int</type><parameter>link</parameter></methodparam>
      <methodparam><type>string</type><parameter>callback</parameter></methodparam>
     </methodsynopsis>
    <para>
     &warn.undocumented.func;
    </para>
   </refsect1>
  </refentry>



  <refentry id='function.ldap-sort'>
   <refnamediv>
    <refname>ldap_sort</refname>
    <refpurpose>
     Sortiert LDAP Ergebniseintrge
    </refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
     <methodsynopsis>
      <type>int</type><methodname>ldap_sort</methodname>
      <methodparam><type>int</type><parameter>link</parameter></methodparam>
      <methodparam><type>int</type><parameter>result</parameter></methodparam>
      <methodparam><type>string</type><parameter>sortfilter</parameter></methodparam>
     </methodsynopsis>
    <para>
     &warn.undocumented.func;
    </para>
   </refsect1>
  </refentry>



  <refentry id='function.ldap-start-tls'>
   <refnamediv>
    <refname>ldap_start_tls</refname>
    <refpurpose>
     Startet TLS
    </refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
     <methodsynopsis>
      <type>int</type><methodname>ldap_start_tls</methodname>
      <methodparam><type>int</type><parameter>link</parameter></methodparam>
     </methodsynopsis>
    <para>
     &warn.undocumented.func;
    </para>
   </refsect1>
  </refentry>



  <refentry id='function.ldap-t61-to-8859'>
   <refnamediv>
    <refname>ldap_t61_to_8859</refname>
    <refpurpose>
     bersetzt t61 Zeichen nach 8859 Zeichen
    </refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung</title>
     <methodsynopsis>
      <type>string</type><methodname>ldap_t61_to_8859</methodname>
      <methodparam><type>string</type><parameter>value</parameter></methodparam>
     </methodsynopsis>
    <para>
     &warn.undocumented.func;
    </para>
   </refsect1>
  </refentry>

 </reference>


<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->