assign('index_error', 1); if($errorno == 1){ $smarty->assign('index_error_text', "Es müssen alle Felder ausgefüllt werden"); } # Bei LDAP wird eine Registrierung automatisch durchgeführt #if($errorno == 2){ # $smarty->assign('index_error_text', "Ber Benutzername ist im System nicht vorhanden"); #} if($errorno == 3){ $smarty->assign('index_error_text', "Ber Benutzername oder das Passwort ist nicht korrekt
Stellen Sie sicher, dass Ihr Benutzerkonto in der Hochschule aktiv ist."); } # Daten aufbereiten bei Fehler if(isset($_SESSION["global_username"])){ $smarty->assign('index_user', $_SESSION["global_username"]); } } } if($action == 'anmeld'){ $username=strtolower($_POST["user"]); //remove case sensitivity on the username $password=$_POST["password"]; if($_POST["user"] != ""){ $_SESSION["global_username"]=$username; } if($username == "" OR $password == ""){ echo ""; }else{ $db = dbconnect(); $query_ldapuser = $db->query("SELECT wert1, wert2 FROM dep_parameter WHERE pid='2'"); $row_ldapuser = $query_ldapuser->fetch_array(); ################################ ## Prüfe studnet ob Treffer ################################ # bind wird benötigt, sonst werden die Umlaute bei Namen nicht richtig angezeigt ?!!? $ds=@ldap_connect("141.10.144.37", "389"); ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3); $r=@ldap_bind($ds, $row_ldapuser['wert1'], $row_ldapuser['wert2']); $_ldap_dn = "ou=ouStudnet,dc=studnet,dc=hs-ludwigsburg,dc=de"; $sr=@ldap_search($ds, $_ldap_dn, "samaccountname=$username"); $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); $result_jg = $db->query("SELECT ag, jahrgang FROM kurs.stud WHERE lower(uid)='$username'"); $row_jg = $result_jg->fetch_array(); ################################ ### Wenn binden fehlschlägt, also Passwort falsch ##!!!!! IM STUDNET MIT DEM USERNAMEN BINDEN, IM HSNET MIT DEM DISTINGUISHEDNAME !!!!!!################# #if ($bind = @ldap_bind($ds, $username, $password) AND $anzahl > 0){ if ($bind = ldap_bind($ds, $distinguishedName, $password) AND $anzahl > 0){ # Bind funktioniert #echo "studnet: Bind funktioniert: $anzahl
"; $login = "0"; $login_ad = "studnet"; }else{ # Bind funktioniert nicht #echo "studnet: Bind funktioniert nicht: $anzahl
"; $login = "1"; ldap_close($ds); } #exit; ######## # INFO hsnet: Würde man nur $_ldap_dn = "dc=hsnet,dc=hs-ludwigsburg,dc=de"; angeben ohne OU=OUHochschunetzwerk oä., würde php beim search nichts mehr finden und alle Passwörter akzeptieren ######## ################################ ## Prüfe OUHochschulnetzwerk ob Treffer, wenn studnet nicht funktioniert ################################ if($login == "1" and $anzahl == "0"){ $ds=@ldap_connect("141.10.128.31", "389"); ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3); # bind wird benötigt, sonst werden die Umlaute bei Namen nicht richtig angezeigt ?!!? $r=@ldap_bind($ds, $row_ldapuser['wert1'], $row_ldapuser['wert2']); $_ldap_dn = "ou=OUHochschulnetzwerk,dc=hsnet,dc=hs-ludwigsburg,dc=de"; $sr=@ldap_search($ds, $_ldap_dn, "samaccountname=$username"); $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 USERNAMEN BINDEN, IM HSNET MIT DEM DISTINGUISHEDNAME !!!!!!################# if ($bind = ldap_bind($ds, $distinguishedName, $password) AND $anzahl > 0){ #echo "hsnet: Bind funktioniert: $anzahl |$distinguishedName|
"; $login = "0"; $login_ad = "hsnet"; }else{ # Bind funktioniert nicht $login= "1"; ldap_close($ds); #echo "hsnet: Bind funktioniert nicht: $anzahl
"; } } ################################ ## Prüfe OURechenzentrum ob Treffer, wenn studnet nicht funktioniert ################################ if($login == "1" and $anzahl == 0){ $ds=@ldap_connect("141.10.128.31", "389"); ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3); # bind wird benötigt, sonst werden die Umlaute bei Namen nicht richtig angezeigt ?!!? $r=@ldap_bind($ds, $row_ldapuser['wert1'], $row_ldapuser['wert2']); $_ldap_dn = "ou=OURechenzentrum,dc=hsnet,dc=hs-ludwigsburg,dc=de"; $sr=@ldap_search($ds, $_ldap_dn, "samaccountname=$username"); $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 USERNAMEN BINDEN, IM HSNET MIT DEM DISTINGUISHEDNAME !!!!!!################# if ($bind = ldap_bind($ds, $distinguishedName, $password) AND $anzahl > 0){ #echo "RZ: Bind funktioniert: $anzahl
"; $login = "0"; $login_ad = "hsnet"; }else{ # Bind funktioniert nicht #echo "RZ: Bind funktioniert nicht: $anzahl
"; $login= "1"; ldap_close($ds); } } /* echo "
distinguishedName = $distinguishedName
anzahl_hs $anzahl
Username $username, $vorname, $nachname, $mail
account: $username, $password
login $login
exit; */ $db = dbconnect(); $result = $db->query("SELECT imtuid, uid, passwort FROM dep_user WHERE lower(uid)='$username'"); $row = $result->fetch_array(); // Wenn expiredate überschritten, dann 1 #$result2 = $db->query("SELECT 1 # FROM dep_user # WHERE pw_expire < now() # AND uid = '$row[user]' # "); #$row2 = $result2->fetch_array(); # Wenn es den Benutzer nicht gibt, wird bei LDAP automatisch registriert #if ($username != strtoupper($row[uid])) { # echo ""; #} // Passwort falsch if ($login == "1"){ //Ging in studnet und hsnet der Login schief # Cookies werden bereits gesetzt, falls sich jemand ein passwort zusenden lässt. #$_SESSION["global_uid"] = $row[imtuid]; #$_SESSION["global_username"] = $row[uid]; ## => Bei LDAP nicht möglich! Nur Fehler ausgeben echo ""; } if ($login == "0" AND $anzahl > 0){ # echo "geht -> weiter"; # exit; ## Login hat entweder im studnet oder im hsnet funktioniert. ## Prüfen, ob es den Benutzer bereits gibt, sonst Registrierung durchführen $db = dbconnect(); $resultanz = $db->query("SELECT count(*) Anz FROM dep_user WHERE lower(uid)='$username'"); $rowanz = $resultanz->fetch_array(); if($rowanz['Anz'] > 0){ # Benutzer ist bereits registriert $db = dbconnect(); $datum=date("Y-m-d H:i:s"); $ip=getenv("REMOTE_ADDR"); $agent=getenv("HTTP_USER_AGENT"); $user_admin = $row['imtuid']; $_SESSION["global_uid"] = $user_admin; $_SESSION["global_username"] = $row['uid']; $result_1 = $db->query("INSERT INTO dep_userlog (Datum, IP, user_agent, imtuid) VALUES ('$datum', '$ip', '$agent', '$user_admin')"); $sql = $db->query ("UPDATE dep_user SET mail_inaktiv='0000-00-00 00:00:00' WHERE imtuid='$user_admin'"); $smarty->assign('index_login', "1"); }else{ # echo "geht -> Register"; # exit; ## Registrierung durchführen $_SESSION["register_vorname"] = "$vorname"; $_SESSION["register_nachname"] = "$nachname"; $_SESSION["register_mail"] = "$mail"; #$smarty->assign('register_ad', "$login_ad"); $_SESSION["register_ad"] = "$login_ad"; if($login_ad == "studnet"){ $_SESSION["register_ag"] = "$row_jg[ag]"; $_SESSION["register_jahrgang"] = "$row_jg[jahrgang]"; } echo ""; } } mysqli_close($db); } } if($action == 'register'){ if(isset($_GET[error])){ $errorno = $_GET['error']; $smarty->assign('index_error', 1); if($errorno == 4){ # Daten aufbereiten bei Fehler Beziehung zur Hochschule hsnet if(isset($_SESSION["register_fakultaet"])){ $smarty->assign('register_fakultaet', $_SESSION["register_fakultaet"]); } $smarty->assign('register_error_text', "Es muss das Feld Beziehung zur Hochschule ausgefüllt werden."); } if($errorno == 5){ # Daten aufbereiten bei Fehler AG studnet if(isset($_SESSION["register_jahrgang"])){ $smarty->assign('register_jahrgang', $_SESSION["register_jahrgang"]); } $smarty->assign('register_error_text', "Es muss das Feld AG ausgefüllt werden."); } if($errorno == 6){ # Daten aufbereiten bei Fehler Jahrgang hsnet if(isset($_SESSION["register_ag"])){ $smarty->assign('register_ag', $_SESSION["register_ag"]); } $smarty->assign('register_error_text', "Es muss das Feld Jahrgang ausgefüllt werden."); } } $db = dbconnect(); $smarty->assign('register_ag', $_SESSION["register_ag"]); $smarty->assign('register_adir', $_SESSION["register_ad"]); $query = "SELECT distinct jahrgang FROM kurs.stud WHERE jahrgang <= substr(date_format(now(), '%Y'),3,2) ORDER BY jahrgang desc LIMIT 4"; $result = $db->query ($query) or die ("Cannot execute query1"); $table_data = array(); while ($row = $result->fetch_array()){ if($row['jahrgang'] == $_SESSION["register_jahrgang"]){ $select = 1; }else{ $select = 0; } array_push($table_data, array( 'select' => $select, 'jahrgang' => $row['jahrgang'] ) ); } $smarty->assign('table_data', $table_data); } if($action == 'register2'){ $art = $_GET['art']; $username = $_SESSION["global_username"]; $vorname = $_SESSION["register_vorname"]; $nachname = $_SESSION["register_nachname"]; $mail = $_SESSION["register_mail"]; if($art == 'hsnet'){ $register_beziehung = $_POST['register_beziehung']; if ($register_beziehung == ""){ //Fehler, falls Pflichtfeld Beziehung zur Hochschule nicht gefüllt wurde echo ""; $_SESSION["register_fakultaet"] = $_POST['register_fakultaet']; exit; } $register_fakultaet = $_POST['register_fakultaet']; $db = dbconnect(); $datum=date("Y-m-d H:i:s"); $result_1 = $db->query("INSERT INTO dep_user (vorname, nachname, mail, beziehung, fakultaet, uid, aktiv, erstell_dat) VALUES ('$vorname', '$nachname', '$mail', '$register_beziehung', '$register_fakultaet', '$username', 1, '$datum')"); } if($art == 'studnet'){ $ag = $_POST['ag']; $jahrgang = $_POST['jahrgang']; if ($ag == ""){ //Fehler, falls Pflichtfeld Beziehung zur Hochschule nicht gefüllt wurde echo ""; $_SESSION["register_jahrgang"] = $jahrgang; exit; } if ($jahrgang == ""){ //Fehler, falls Pflichtfeld Beziehung zur Hochschule nicht gefüllt wurde echo ""; $_SESSION["register_ag"] = $ag; exit; } $db = dbconnect(); $datum=date("Y-m-d H:i:s"); $result_1 = $db->query("INSERT INTO dep_user (vorname, nachname, mail, beziehung, ag, jahrgang, uid, aktiv, erstell_dat) VALUES ('$vorname', '$nachname', '$mail', 'S', '$ag', '$jahrgang', '$username', 1, '$datum')"); } $db = dbconnect(); $result_jg = $db->query("SELECT ag, jahrgang FROM kurs.stud WHERE lower(uid)='$username'"); $row_jg = $result_jg->fetch_array(); $result = $db->query("SELECT imtuid FROM dep_user WHERE lower(uid)='$username'"); $row = $result->fetch_array(); $datum=date("Y-m-d H:i:s"); $ip=getenv("REMOTE_ADDR"); $agent=getenv("HTTP_USER_AGENT"); $user_admin = $row['imtuid']; $_SESSION["global_uid"] = $user_admin; $_SESSION["global_username"] = $row['uid']; $result_1 = $db->query("INSERT INTO dep_userlog (Datum, IP, user_agent, imtuid) VALUES ('$datum', '$ip', '$agent', '$user_admin')"); $sql = $db->query ("UPDATE dep_user SET mail_inaktiv='0000-00-00 00:00:00' WHERE imtuid='$user_admin'"); $smarty->assign('index_login', "1"); } $smarty->assign('action', "$action"); $smarty->display("$template/$templatename"); ?>