schwerpunktthemen/index_ldap.php
2023-04-25 13:04:04 +02:00

487 lines
14 KiB
PHP
Executable File
Raw Permalink Blame History

<?php
include("kurs/datenbankanbindung.php"); // f&uuml;gt die Datenbankanbindung ein: Sys:\php\includes\kurs\datenbankanbindung.php
#require("check_zweig.php"); // Pr<50>ft, ob Innenverwaltung angemeldet ist: setzt datenbankanbindung.php voraus
$db = dbconnect();
session_start();
$ansp = $db->query("SELECT wert1, wert2 FROM parameter WHERE pid='1'");
$uhd = $ansp->fetch_array();
$query_ldapcon = $db->query("SELECT wert1 FROM parameter WHERE pid='12'");
$row_ldapcon = $query_ldapcon->fetch_array();
$query_ldapuser = $db->query("SELECT wert1, wert2 FROM parameter WHERE pid='13'");
$row_ldapuser = $query_ldapuser->fetch_array();
$_ldap_dn = "ou=ouStudnet,dc=studnet,dc=hs-ludwigsburg,dc=de";
$ansprechpart = "$uhd[wert1]"; // Ansprechpartner bei Probleme
$helpmail = "$uhd[wert2]"; // Kontaktmailadresse bei Problemen
$systemname = "Anmeldesystem";
$_SESSION['systemname'] = $systemname;
if (isset($_GET['action']))
$action = $_GET['action'];
else
$action = "";
switch($action){
default:
echo"
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html>
<head>
<!--META-->
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
<title>Anmeldung $systemname</title>
<!--STYLESHEETS-->
<link href='login.css' rel='stylesheet' type='text/css'>
<link href='../login.css' rel='stylesheet' type='text/css'>
</head>
<body>
<!--WRAPPER-->
<div id='wrapper'>
<!--LOGIN FORM-->
<form name='login-form' class='login-form' action=";echo $_SERVER['PHP_SELF'] . "?action=anmeld";echo" method=\"POST\" name=\"login\">
<!--HEADER-->
<div class='header'>
<!--TITLE--><h1>$systemname</h1><!--END TITLE-->
<!--DESCRIPTION--><span><font color=red><b><u>NEU: Studierende der Hochschule Ludwigsburg:</u></b></font><br>
Bitte verwenden Sie Ihre Windows Benutzerkennung und Passwort! Das bisherige Passwort der Anmeldesysteme ist nicht mehr g&uuml;ltig.</span><!--END DESCRIPTION-->
<br>
<br>
<!--DESCRIPTION--><span><span><font color=red><b><u>Studenten der Hochschule Kehl:</u></b></font><br>
Verwenden Sie - wie bisher - weiterhin ihr &uuml;bliches Passwort.</span><!--END DESCRIPTION-->
</div>
<!--END HEADER-->
<!--CONTENT-->
<div class='content'>
<!--USERNAME--><input name='uid' class='input username' value='Benutzername' onfocus=\"this.value=''\" type='text'><!--END USERNAME-->
<!--PASSWORD--><input name='pwd' class='input password' value='Passwort' onfocus=\"this.value=''\" type='password'><!--END PASSWORD-->
</div>
<!--END CONTENT-->
<!--FOOTER-->
<div class='footer'>
<!--LOGIN BUTTON--><input name='submit' value='Login' class='button' type='submit'><!--END LOGIN BUTTON-->
</div>
<!--END FOOTER-->
</form>
<!--END LOGIN FORM-->
</div>
<!--END WRAPPER-->
</body>
</html>";
break;
case "anmeld":
$systemname = $_SESSION['systemname'];
$uid = strtolower($_POST[uid]);
$pwd = $_POST[pwd];
$db = dbconnect();
$result = $db->query("SELECT hs, LOWER(uid) uid, Pwd FROM stud where uid=\"$uid\"");
$row = $result->fetch_array();
// Abfrage, was tun wenn Felder leer sind bzw. Passwort falsch ist
if ($uid == "" or $_POST['pwd'] == "")
{
echo "
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html>
<head>
<!--META-->
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
<title>Anmeldung $systemname</title>
<!--STYLESHEETS-->
<link href='login.css' rel='stylesheet' type='text/css'>
<link href='../login.css' rel='stylesheet' type='text/css'>
</head>
<body>
<!--WRAPPER-->
<div id='wrapper'>
<!--LOGIN FORM-->
<form name='login-form' class='login-form' action=";echo $_SERVER['PHP_SELF']; echo" method=\"POST\" name=\"login\">
<!--HEADER-->
<div class='header'>
<!--TITLE--><h1>Fehler</h1><!--END TITLE-->
<!--DESCRIPTION-->
<span>
Es m&uuml;ssen alle Felder ausgef&uuml;llt werden
<br>
<br>
</span>
<!--END DESCRIPTION-->
</div>
<!--END HEADER-->
<!--FOOTER-->
<div class='footer'>
<!--LOGIN BUTTON--><input name='submit' value='Zur&uuml;ck' class='button' type='submit'><!--END LOGIN BUTTON-->
</div>
<!--END FOOTER-->
</form>
</div>
<!--END WRAPPER-->
</body>
</html>
<html>";
exit;
}
if ($uid != $row[uid]) {
echo"
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html>
<head>
<!--META-->
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
<title>Anmeldung $systemname</title>
<!--STYLESHEETS-->
<link href='login.css' rel='stylesheet' type='text/css'>
<link href='../login.css' rel='stylesheet' type='text/css'>
</head>
<body>
<!--WRAPPER-->
<div id='wrapper'>
<!--LOGIN FORM-->
<form name='login-form' class='login-form' action=";echo $_SERVER['PHP_SELF']; echo" method=\"POST\" name=\"login\">
<!--HEADER-->
<div class='header'>
<!--TITLE--><h1>Fehler</h1><!--END TITLE-->
<!--DESCRIPTION-->
<span>
Der Anmeldenamen ist im System nicht vorhanden!<br>
Wenden Sie sich bitte an <a href=\"mailto:$helpmail?subject=Keine Anmeldekennung\">$ansprechpart</a>!</b></p>
<br>
<br>
</span>
<!--END DESCRIPTION-->
</div>
<!--END HEADER-->
<!--FOOTER-->
<div class='footer'>
<!--LOGIN BUTTON--><input name='submit' value='Zur&uuml;ck' class='button' type='submit'><!--END LOGIN BUTTON-->
</div>
<!--END FOOTER-->
</form>
</div>
<!--END WRAPPER-->
</body>
</html>
<html>";
exit;
}
if($row['hs'] == 'L' AND $row_ldapcon['wert1'] == 'Y'){
$ds=@ldap_connect("141.10.144.37", "389");
ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
################################
## Benutzerinfos aus LDAP setzen
################################
# bind wird benoetigt, sonst werden die Umlaute bei Namen nicht richtig angezeigt ?!!?
$r=@ldap_bind($ds, $row_ldapuser['wert1'], $row_ldapuser['wert2']);
$sr=@ldap_search($ds, $_ldap_dn, "samaccountname=$uid");
$info = @ldap_get_entries($ds, $sr);
$anzahl = ldap_count_entries($ds,$sr);
$vorname = $info[0]['givenname'][0];
$nachname = $info[0]['sn'][0];
$mail = $info[0]['mail'][0];
$first = ldap_first_entry($ds,$sr);
$distinguishedName = ldap_get_dn($ds,$first);
################################
# Bind geht im hsnet nur über den DN "CN=Schwarz\, Alexander, OU=Externe Benutzer, ou=OUHochschulnetzwerk,dc=hsnet,dc=hs-ludwigsburg,dc=de"
##!!!!! IM STUDNET MIT DEM DISTINGUISHEDNAME !!!!!!#################
$password=utf8_decode($pwd);
if ($bind = ldap_bind($ds, $distinguishedName, $password) AND $anzahl > 0){
#echo "Bind geht:<br>$distinguishedName | $pwd<br>$anzahl<br>";
$db = dbconnect();
$sql = $db->query ("UPDATE stud
SET vorname='$vorname'
,nachname='$nachname'
,mail='$mail'
WHERE uid='$uid'");
$login = "0";
}else{
#echo "Bind geht nicht:<br>$distinguishedName<br>$anzahl";
$login = "1";
}
}else{
# Kehler Login
$passwd = md5($_POST['pwd']);
$login = "0";
if ($passwd != $row['Pwd']){
$login = "1";
$pw_failure= "1";
}
}
if ($row['hs'] == 'K'){
# Kehler Studenten haben ihr Passwort in Tabelle stud. Daher d<>rfen Sie es selbst zur<75>cksetzen.
$pw_zusatz ="Sie k&ouml;nnen sich ein neues Passwort an Ihre<br>Hochschul-Mailadresse schicken lassen:<br><a href=". $_SERVER['PHP_SELF'] . "?action=pass_gen>Neues Passwort setzen</a><br>";
}
if ($login == 1){
// Cokkie hier, falls PW generiert werden soll
setcookie("uid1","");
setcookie("uid1","$row[uid]");
# F<>r Ludwigsburger Studenten soll das Passwort zur<75>cksetzen und per Mail zuschicken nicht angeboten werden,
# da die Informationen im LDAP stehen.
echo "
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html>
<head>
<!--META-->
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
<title>Anmeldung $systemname</title>
<!--STYLESHEETS-->
<link href='login.css' rel='stylesheet' type='text/css'>
<link href='../login.css' rel='stylesheet' type='text/css'>
</head>
<body>
<!--WRAPPER-->
<div id='wrapper'>
<!--LOGIN FORM-->
<form name='login-form' class='login-form' action=";echo $_SERVER['PHP_SELF']; echo" method=\"POST\" name=\"login\">
<!--HEADER-->
<div class='header'>
<!--TITLE--><h1>Fehler</h1><!--END TITLE-->
<!--DESCRIPTION-->
<span>
Das eingegebene Passwort ist entweder falsch oder konnte nicht verifiziert werden.<br>
Wenden Sie sich bitte an <a href=\"mailto:$helpmail?subject=Keine Anmeldekennung\">$ansprechpart</a>!</b></p>
<br>
<br>
$pw_zusatz
<br>
</span>
<!--END DESCRIPTION-->
</div>
<!--END HEADER-->
<!--FOOTER-->
<div class='footer'>
<!--LOGIN BUTTON--><input name='submit' value='Zur&uuml;ck' class='button' type='submit'><!--END LOGIN BUTTON-->
</div>
<!--END FOOTER-->
</form>
</div>
<!--END WRAPPER-->
</body>
</html>
";
exit;
}
#echo "Login";
#exit;
# wenn Benutzername und Passwort stimmen, dann Weiterleitung
setcookie("uid1","");
setcookie("uid1","$row[uid]");
if (file_exists("balancing_ldap.php")) {
echo "<meta http-equiv=\"refresh\" content=\"0; URL=balancing_ldap.php\">";
} else {
if (file_exists("index_frame.htm")) {
echo "<meta http-equiv=\"refresh\" content=\"0; URL=index_frame.htm\">";
}else{
## Bei Veranstaltung und stellenantrag zB. ist es in einem weiteren Unterordner
echo "<meta http-equiv=\"refresh\" content=\"0; URL=stud/index_frame.htm\">";
}
}
break;
case "pass_gen":
$uid1=$_COOKIE["uid1"];
$systemname = $_SESSION['systemname'];
$pool = "qwertzupasdfghkyxcvbnm";
$pool .= "23456789";
$pool .= "WERTZUPLKJHGFDSAYXCVBNM";
srand ((double)microtime()*1000000);
for($index = 0; $index < 7; $index++)
{
$pass_word .= substr($pool,(rand()%(strlen ($pool))), 1);
}
$new_pw_md5=md5($pass_word);
$sql = $db->query ("UPDATE stud SET pwd='$new_pw_md5' WHERE uid='$uid1'");
// Nachricht &uuml;ber Passwortr&uuml;cksetzung: Hinzugef&uuml;gt 19.09.2006
$result2 = $db->query("SELECT uid, vorname, nachname, mail FROM stud where uid='$uid1'");
$row2 = $result2->fetch_array();
$empfaenger = "$row2[mail]";
$betreff = "Kurssystem: Passwort zur&uuml;ckgesetzt";
$text = "
<html>
<head>
<title>Passwort zur&uuml;ckgesetzt</title>
</head>
<body>
<font face='Arial' size='2'>
Guten Tag $row2[vorname] $row2[nachname]!<br><br>
Sie haben Ihr Passwort im Kurssystem zur&uuml;ckgesetzt!<br>
Nachfolgend finden Sie Ihre neuen Zugangsdaten:
<br>
<br>
<table>
<tr>
<td valign='top'>
<font face='Arial' size='2'>
Benutzerkennung:
</font>
</td>
<td valign='top'>
<font face='Arial' size='2'>
<b>$row2[uid]</b>
</font>
</td>
</tr>
<tr>
<td valign='top'>
<font face='Arial' size='2'>
Passwort:
</font>
</td>
<td valign='top'>
<font face='Arial' size='2'>
<b>$pass_word</b>
</font>
</td>
</tr>
</table>
<br>
Bitte beachten Sie, dass zwischen Gro&szlig;- und<br>
Kleinschreibung unterschieden wird.
<p>
&Auml;ndern Sie bitte zu Ihrer eigenen Sicherheit das<br>
Passwort nach dem ersten Login.
<p>
Link zum Anmeldesystem: <a href=\"https://www.fh-ludwigsburg.de/kurs\">Kurssystem</a>
<p>
Diese Mail wurde automatisch generiert!<br>
Antworten Sie daher nicht auf diese Mail<br>
<br>
Vielen Dank
</body>
</html>";
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=utf-8\r\n";
$return = @mail($empfaenger, $betreff, $text, $headers);
// ENDE Nachricht &uuml;ber Passwortr&uuml;cksetzung
if($return){
echo "
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html>
<head>
<!--META-->
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
<title>Best&auml;tigung</title>
<!--STYLESHEETS-->
<link href='login.css' rel='stylesheet' type='text/css'>
<link href='../login.css' rel='stylesheet' type='text/css'>
</head>
<body>
<!--WRAPPER-->
<div id='wrapper'>
<!--LOGIN FORM-->
<form name='login-form' class='login-form' action=";echo $_SERVER['PHP_SELF']; echo" method=\"POST\" name=\"login\">
<!--HEADER-->
<div class='header'>
<!--TITLE--><h1>Best&auml;tigung</h1><!--END TITLE-->
<!--DESCRIPTION-->
<span>
Ihr neues Passwort wurde an $row2[mail] geschickt.
<br>
<br>
</span>
<!--END DESCRIPTION-->
</div>
<!--END HEADER-->
<!--FOOTER-->
<div class='footer'>
<!--LOGIN BUTTON--><input name='submit' value='Zur&uuml;ck' class='button' type='submit'><!--END LOGIN BUTTON-->
</div>
<!--END FOOTER-->
</form>
</div>
<!--END WRAPPER-->
</body>
<html>";
exit;
}else{
echo "
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html>
<head>
<!--META-->
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
<title>Versandfehler</title>
<!--STYLESHEETS-->
<link href='login.css' rel='stylesheet' type='text/css'>
<link href='../login.css' rel='stylesheet' type='text/css'>
</head>
<body>
<!--WRAPPER-->
<div id='wrapper'>
<!--LOGIN FORM-->
<form name='login-form' class='login-form' action=";echo $_SERVER['PHP_SELF']; echo" method=\"POST\" name=\"login\">
<!--HEADER-->
<div class='header'>
<!--TITLE--><h1>Versandfehler</h1><!--END TITLE-->
<!--DESCRIPTION-->
<span>
Das Passwort konnte nicht verschickt werden!<br>
Wenden Sie sich bitte an <a href=\"mailto:$helpmail?subject=Keine Anmeldekennung\">$ansprechpart</a>!</b></p>
<br>
<br>
</span>
<!--END DESCRIPTION-->
</div>
<!--END HEADER-->
<!--FOOTER-->
<div class='footer'>
<!--LOGIN BUTTON--><input name='submit' value='Zur&uuml;ck' class='button' type='submit'><!--END LOGIN BUTTON-->
</div>
<!--END FOOTER-->
</form>
</div>
<!--END WRAPPER-->
</body>
<html>";
exit;
}
} // Ende IF von Action Abfrage
?>