ideenmanagement/ldap_search.php
2023-03-09 11:22:13 +01:00

425 lines
17 KiB
PHP
Executable File

<?php
include("kurs/datenbankanbindung.php"); // f&uuml;gt die Datenbankanbindung ein: Sys:\php\includes\kurs\datenbankanbindung.php
// Grundlegende Abfolge bei LDAP ist verbinden, binden, suchen,
// interpretieren des Sucheergebnisses, Verbindung schlie&szlig;en
if (isset($_GET['action']))
$action = $_GET['action'];
else
$action = "";
switch($action){
default:
echo"
<html>
<head>
<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">
<link rel=\"stylesheet\" href=\"tmpl/standard/css/styles_pc.css\" type=\"text/css\">
<title>Suchen</title>
</head>
<body onload=\"if(document.login)document.login.suchstring.focus();return false;\">
<table border=\"0\" style=\"border-collapse: collapse\" width=\"100%\" cellpadding=\"0\" height=\"100%\" id=\"table1\">
<tr>
<td>
<div align=\"center\">
<table cellspacing=\"0\" cellpadding=\"0\" width=\"550\" border=\"0\">
<tr>
<td width=\"1%\" background=\"tmpl/standard/images/box_e1.gif\">
<img height=\"40\" src=\"tmpl/standard/images/blank.gif\" width=\"22\">
</td>
<td width=\"95%\" background=\"tmpl/standard/images/box_top.gif\">
<img height=\"10\" src=\"tmpl/standard/images/blank.gif\" width=\"1\"><br>
<font class=\"hd\">LDAP Suche</font><br>
<font class=\"sh\">In der Benutzerverwaltung suchen</font>
<img height=\"5\" src=\"tmpl/standard/images/blank.gif\" width=\"1\">
</td>
<td nowrap=\"nowrap\" align=\"left\" width=\"3%\" background=\"tmpl/standard/images/box_top.gif\" valign=\"top\">
</td>
<td nowrap=\"nowrap\" align=\"right\" width=\"1%\" background=\"tmpl/standard/images/box_e2.gif\">
<img height=\"40\" src=\"tmpl/standard/images/blank.gif\" width=\"22\">
</td>
</tr>
<tr>
<td width=\"1%\" background=\"tmpl/standard/images/box_l.gif\">
<img height=\"1\" src=\"tmpl/standard/images/blank.gif\" width=\"95%\">
</td>
<td colspan=\"2\"><br>
<p></p>
<p></p>
<p></p>
<p></p>
<form action="; echo $_SERVER['PHP_SELF'] . "?action=suchen"; echo" method=\"POST\" name=\"login\">
<input type=\"hidden\" name=\"tparam\" value=\"945180225\">
<table cellspacing=\"1\" cellpadding=\"1\" width=\"100%\" border=\"0\">
<tr>
<td class=\"formdesc\" width=\"60%\">
Suchbegriff:
</td>
<td width=\"40%\">
<input type=\"text\" name=\"suchstring\" size=\"40\" tabindex=\"2\"><br>
</td>
</tr>
<tr>
<td class=\"formdesc\" width=\"60%\">
Suchpfad:
</td>
<td width=\"40%\">
<input type=\"radio\" name=\"suchpfad\" value=\"sn\" checked>Nachnamen<br>
<input type=\"radio\" name=\"suchpfad\" value=\"samaccountname\">UIDs
</td>
</tr>
<tr>
<td class=\"formdesc\" width=\"60%\">
Domain:
</td>
<td width=\"40%\">
<select name='domain'>
<option value='hsnet'>HSNET (Professoren, Lehrbeauftragte, Angestellte)</option>
<option value='studnet'>STUDNET (Studierende)</option>
</select>
</td>
</tr>
<tr>
<td align=\"center\" colspan=\"2\">
<br>
<font size=\"1\">Es k&ouml;nnen auch nur Teile des Begriffs eingegeben werden: Begri*</font>
<p>
</td>
</tr>
<tr>
<td align='center' colspan=\"2\">
<input title=\"Suchen\" type=\"image\" src=\"tmpl/standard/images/suchen.gif\" border=\"0\">
</td>
</tr>
</td>
</tr>
</table>
</form>
<p><br>
</p>
</td>
<td width=\"1%\" background=\"tmpl/standard/images/box_r.gif\">
<img height=\"1\" src=\"tmpl/standard/images/blank.gif\" width=\"22\">
</td>
</tr>
<tr>
<td nowrap=\"nowrap\" align=\"left\" width=\"1%\" background=\"tmpl/standard/images/box_e3.gif\">
<img height=\"16\" src=\"tmpl/standard/images/blank.gif\" width=\"22\"></td>
<td nowrap=\"nowrap\" align=\"left\" width=\"98%\" background=\"tmpl/standard/images/box_bottom.gif\" colspan=\"2\">
<img height=\"16\" src=\"tmpl/standard/images/blank.gif\" width=\"8\"></td>
<td nowrap=\"nowrap\" align=\"right\" width=\"1%\" background=\"tmpl/standard/images/box_e4.gif\">
<img height=\"16\" src=\"tmpl/standard/images/blank.gif\" width=\"22\"> </td>
</tr>
</table>
</div>
</td>
</tr>
</table>
</body>
</html>
";
break;
case "suchen":
if($_POST['suchstring'] != "")
{
$suchstring=$_POST['suchstring'];
$suchpfad=$_POST['suchpfad'];
$domain=$_POST['domain'];
setcookie("suchpfad","$suchpfad");
setcookie("suchstring","$suchstring");
setcookie("domain","$domain");
}
if($suchstring == "")
{
$suchpfad=$_COOKIE["suchpfad"];
$suchstring=$_COOKIE["suchstring"];
}
$nummer = 0 + $_GET['nummer'];
if(empty($_GET['sort']))
{
$sort = "desc";
}else{
NULL;
}
if(isset($_GET['sort0']))
{
if($sort0 == "asc")
{
$sort = "desc";
} else {
$sort = "asc";
}
}
if(isset($_GET['sort1']))
{
if($sort1 == "asc")
{
$sort = "desc";
} else {
$sort = "asc";
}
}
if(isset($_GET['sort3']))
{
if($sort3 == "asc")
{
$sort = "desc";
} else {
$sort = "asc";
}
}
if(isset($_GET['sort4']))
{
if($sort4 == "asc")
{
$sort = "desc";
} else {
$sort = "asc";
}
}
if(isset($_GET['sort5']))
{
if($sort5 == "asc")
{
$sort = "desc";
} else {
$sort = "asc";
}
}
$_ad_username="LDAPqueryUser";
$_ad_password="ldHS332";
if($domain == "hsnet"){
$_ldap_dn = "ou=OUHochschulnetzwerk,dc=hsnet,dc=hs-ludwigsburg,dc=de";
$ds=@ldap_connect("141.10.128.30", "389"); // muss ein g&uuml;ltiger LDAP Server Port 389->3268
ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
}
if($domain == "studnet"){
$_ldap_dn = "ou=ouStudnet,dc=studnet,dc=hs-ludwigsburg,dc=de";
$ds=@ldap_connect("141.10.144.37", "389"); // muss ein g&uuml;ltiger LDAP Server Port 389->3268
ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
}
if ($ds) {
$r=ldap_bind($ds, $_ad_username, $_ad_password);
// Suchen des Nachnamen-Eintrags
#$suchstring2=$suchstring;
#$sr=ldap_search($ds,"o=fhov", "cn=$suchstring");
$sr=ldap_search($ds, $_ldap_dn, "$suchpfad=$suchstring");
$anzahl = ldap_count_entries($ds,$sr);
$info = ldap_get_entries($ds, $sr);
// Funktion mit der Sortierung
function multi_sort($input, $key, $type) {
if(is_array($input) && is_numeric($key)) {
$tmp_arr = array();
$output = array();
foreach($input as $i_key => $i_value) {
$tmp_arr[$i_key] = $i_value[$key];
}
natcasesort($tmp_arr);
reset($tmp_arr);
foreach($tmp_arr as $tmp_key => $tmp_val) {
$output[] = $input[$tmp_key];
}
if(strtolower($type) != "asc") return $output;
else return array_reverse($output);
}
}
for ($i=0; $i<$info["count"]; $i++) {
//$dn enth&auml;lt dn-string ==> 'cn=test,ou=extern,o=fhov': Nachfolgende Zeilen nur ou extrahieren
$dn = $info[$i]['dn'];
$b = strpos ($dn, "ou=")+3; // Position bestimmen wo ou anf&auml;ngt, +3 damit "ou=" nicht mitangezeigt wird, also Positon um 3 nach recht verschoben wird
$c = strpos ($dn, ",o="); // Position bestimmen woe ,o= anf&auml;ngt
$d = $c-$b; // beide Werte subrahieren, dann erh&auml;lt man die L&auml;nge von ou
$dn = substr($dn, $b, $d);
$old_arr[$i][0] = $info[$i]['cn'][0];
$old_arr[$i][1] = $info[$i]['sn'][0];
$old_arr[$i][2] = $info[$i]['givenname'][0];
$old_arr[$i][3] = $dn;
if ($dn == 'DOZ') // bei den DOZ steht oft sowas wie "Prof." in dem Feld AG --> AG ausblenden
{
$old_arr[$i][4] = '';
}else{
$old_arr[$i][4] = $info[$i]['generationqualifier'][0];
};
$old_arr[$i][5] = $info[$i]['mail'][0];
}
$new_arr = multi_sort($old_arr, $nummer, "$sort");
echo"
<html>
<head>
<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">
<link rel=\"stylesheet\" href=\"tmpl/standard/css/styles_pc.css\" type=\"text/css\">
<title>Suchergebnisse</title>
</head>
<body>
<table valign=\"top\" cellspacing=\"0\" cellpadding=\"0\" width=\"100%\" border=\"0\">
<tr>
<td width=\"10\" background=\"tmpl/standard/images/box_e1.gif\">
<img height=\"40\" src=\"tmpl/standard/images/blank.gif\" width=\"22\"></td>
<td align=\"left\" width=\"98%\" background=\"tmpl/standard/images/box_top.gif\" valign=\"top\">
<img height=\"10\" src=\"tmpl/standard/images/blank.gif\" width=\"1\"><br>
<font class=\"hd\">Suchergebnisse zu Begriff $suchstring</font><br>";
if ($anzahl == 1){$einheit="Suchergebnis";}else{$einheit="Suchergebnisse";}
echo"
<font class=\"sh\">$anzahl $einheit</font><br>
<img height=\"5\" src=\"tmpl/standard/images/blank.gif\" width=\"1\"></td>
<td align=\"right\" width=\"1%\" background=\"tmpl/standard/images/box_e2.gif\">
<img height=\"40\" src=\"tmpl/standard/images/blank.gif\" width=\"22\"></td>
</tr>
<tr>
<td width=\"1%\" background=\"tmpl/standard/images/box_l.gif\">
<img height=\"1\" src=\"tmpl/standard/images/blank.gif\" width=\"22\"></td>
<td>
<table valign=\"top\" border=\"0\" cellpadding=\"4\" cellspacing=\"0\" style=\"border-collapse: collapse\" bordercolor=\"#E7E8ED\" width=\"100%\" id=\"AutoNumber1\">
<tr>
<td width=\"15%\">
<b><a href=".$_SERVER['PHP_SELF'] ."?nummer=0&action=suchen&sort0=$sort>UID</a></b>
</td>
<td width=\"20%\">
<b><a href=".$_SERVER['PHP_SELF'] ."?nummer=1&action=suchen&sort1=$sort>Name</a></b>
</td>
<td width=\"15%\">
<b><a href=".$_SERVER['PHP_SELF'] ."?nummer=3&action=suchen&sort3=$sort>Gruppe</a></b>
</td>
<td width=\"15%\">
<b><a href=".$_SERVER['PHP_SELF'] ."?nummer=4&action=suchen&sort4=$sort>AG</a></b>
</td>
<td width=\"35%\">
<b><a href=".$_SERVER['PHP_SELF'] ."?nummer=5&action=suchen&sort5=$sort>Mail</a></b>
</td>
</tr>";
for ($i=0; $i<$info["count"]; $i++) {
/*
echo "01 ".$info[$i]['samaccountname'][0]."<br>";
echo "02 ".$info[$i]['givenname'][0]."<br>";
echo "03 ".$info[$i]['mail'][0]."<br>";
echo "04 ".$info[$i]['language'][0]."<br>";
echo "05 ".$info[$i]['allowunlimitedcredit'][0]."<br>";
echo "06 ".$info[$i]['accountbalance'][0]."<br>";
echo "07 ".$info[$i]['groupmembership'][0]."<br>";
echo "08 ".$info[$i]['groupmembership'][1]."<br>";
echo "08a".$info[$i]['groupmembership'][2]."<br>";
echo "08b".$info[$i]['groupmembership'][3]."<br>";
echo "09 ".$info[$i]['sn'][0]."<br>";
echo "10 ".$info[$i]['securityequals'][0]."<br>";
echo "11 ".$info[$i]['profile'][0]."<br>";
echo "12 ".$info[$i]['passwordrequired'][0]."<br>";
echo "13 ".$info[$i]['passwordminimumlength'][0]."<br>";
echo "14 ".$info[$i]['passwordexpirationtime'][0]."<br>";
echo "15 ".$info[$i]['passwordexpirationinterval'][0]."<br>";
echo "16 ".$info[$i]['passwordallowchange'][0]."<br>";
echo "17 ".$info[$i]['objectclass'][0]."<br>";
echo "18 ".$info[$i]['logintime'][0]."<br>";
echo "19 ".$info[$i]['loginintruderaddress'][0]."<br>";
echo "20 ".$info[$i]['loginexpirationtime'][0]."<br>";
echo "21 ".$info[$i]['ndshomedirectory'][0]."<br>";
echo "22 ".$info[$i]['cn'][0]."<br>";
echo "23 ".$info[$i]['acl'][0]."<br>";
echo "24 ".$info[$i][dn]."<br>";
echo "<p>";
echo "<p>";
*/
$uid = $info[$i]['samaccountname'][0];
$vorname = $info[$i]['givenname'][0];
$nachname = $info[$i]['sn'][0];
$dn = $info[$i][dn];
$ag = $new_arr[$i][4];
$mail = $info[$i]['mail'][0];
echo"
<tr>
<td width=\"15%\" style=\"border-left-style: none; border-left-width: medium; border-right-style: none; border-right-width: medium; border-top-style: none; border-top-width: medium; border-bottom-style: solid; border-bottom-width: 1px\">
$uid
</td>
<td width=\"20%\" style=\"border-left-style: none; border-left-width: medium; border-right-style: none; border-right-width: medium; border-top-style: none; border-top-width: medium; border-bottom-style: solid; border-bottom-width: 1px\">
$vorname $nachname
</td>
<td valign=\"middle\" width=\"15%\" style=\"border-left-style: none; border-left-width: medium; border-right-style: none; border-right-width: medium; border-top-style: none; border-top-width: medium; border-bottom-style: solid; border-bottom-width: 1px\">
$dn
</td>
<td valign=\"middle\" width=\"15%\" style=\"border-left-style: none; border-left-width: medium; border-right-style: none; border-right-width: medium; border-top-style: none; border-top-width: medium; border-bottom-style: solid; border-bottom-width: 1px\">
$ag
</td>
<td width=\"35%\" style=\"border-left-style: none; border-left-width: medium; border-right-style: none; border-right-width: medium; border-top-style: none; border-top-width: medium; border-bottom-style: solid; border-bottom-width: 1px\">
$mail
</td>
</td>
</tr>";
$uid = "";
$sn = "";
$givenname = "";
$dn = "";
$mail = "";
$ag = "";
}
echo"
</table>
</td>
<td width=\"1%\" background=\"tmpl/standard/images/box_r.gif\">
<img height=\"1\" src=\"tmpl/standard/images/blank.gif\" width=\"22\"></td>
</tr>
<tr>
<td align=\"left\" width=\"1%\" background=\"tmpl/standard/images/box_e3.gif\">
<img height=\"16\" src=\"tmpl/standard/images/blank.gif\" width=\"22\"></td>
<td align=\"left\" width=\"98%\" background=\"tmpl/standard/images/box_bottom.gif\">
<img height=\"16\" src=\"tmpl/standard/images/blank.gif\" width=\"8\"></td>
<td align=\"right\" width=\"1%\" background=\"tmpl/standard/images/box_e4.gif\">
<img height=\"16\" src=\"tmpl/standard/images/blank.gif\" width=\"22\"> </td>
</tr>
</table>
</body>
</html>";
ldap_close($ds);
} else {
echo "<h4>Verbindung zum LDAP Server nicht m&ouml;glich</h4>";
}
} //ENDE SWITCH CASE
?>