first commit
This commit is contained in:
400
index_ldap.php
Executable file
400
index_ldap.php
Executable file
@ -0,0 +1,400 @@
|
||||
<?php
|
||||
## INDEX gegen LDAP
|
||||
session_start();
|
||||
|
||||
include_once 'classes/TestProjektSmarty.class.php';
|
||||
#require_once("config.inc.php");
|
||||
require_once("config/datenbankanbindung.php"); // fügt die Datenbankanbindung ein: Sys:\php\includes\kurs\datenbankanbindung.php
|
||||
$smarty = new Smarty();
|
||||
$template = "login";
|
||||
$templatename = substr(basename($_SERVER['PHP_SELF']),0,-3)."html";
|
||||
$smarty = new Smarty();
|
||||
require_once "language/german.inc.php";
|
||||
|
||||
|
||||
$action = $_GET['action'];
|
||||
if($action == ''){
|
||||
if(isset($_GET['error'])){
|
||||
|
||||
$errorno = $_GET['error'];
|
||||
|
||||
$smarty->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<br>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 "<meta http-equiv=\"refresh\" content=\"0; URL=".$_SERVER['PHP_SELF']."?error=1\">";
|
||||
}else{
|
||||
|
||||
$db = dbconnect();
|
||||
$query_ldapuser = $db->query("SELECT wert1, wert2 FROM imt_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 <br>";
|
||||
$login = "0";
|
||||
$login_ad = "studnet";
|
||||
}else{
|
||||
# Bind funktioniert nicht
|
||||
#echo "studnet: Bind funktioniert nicht: $anzahl <br>";
|
||||
$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.30", "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|<br>";
|
||||
$login = "0";
|
||||
$login_ad = "hsnet";
|
||||
}else{
|
||||
# Bind funktioniert nicht
|
||||
$login= "1";
|
||||
ldap_close($ds);
|
||||
#echo "hsnet: Bind funktioniert nicht: $anzahl <br>";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
################################
|
||||
## Prüfe OURechenzentrum ob Treffer, wenn studnet nicht funktioniert
|
||||
################################
|
||||
if($login == "1" and $anzahl == 0){
|
||||
|
||||
$ds=@ldap_connect("141.10.128.30", "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 <br>";
|
||||
$login = "0";
|
||||
$login_ad = "hsnet";
|
||||
}else{
|
||||
# Bind funktioniert nicht
|
||||
#echo "RZ: Bind funktioniert nicht: $anzahl <br>";
|
||||
$login= "1";
|
||||
ldap_close($ds);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
echo "<br>
|
||||
distinguishedName = $distinguishedName<br>
|
||||
anzahl_hs $anzahl <br>
|
||||
Username $username, $vorname, $nachname, $mail<br>
|
||||
account: $username, $password<br>
|
||||
login $login<br>
|
||||
exit;
|
||||
*/
|
||||
$db = dbconnect();
|
||||
$result = $db->query("SELECT imtuid, uid, passwort FROM imt_user WHERE lower(uid)='$username'");
|
||||
$row = $result->fetch_array();
|
||||
|
||||
|
||||
// Wenn expiredate überschritten, dann 1
|
||||
#$result2 = $db->query("SELECT 1
|
||||
# FROM imt_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 "<meta http-equiv=\"refresh\" content=\"0; URL=".$_SERVER['PHP_SELF']."?error=2\">";
|
||||
#}
|
||||
|
||||
// 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 "<meta http-equiv=\"refresh\" content=\"0; URL=".$_SERVER['PHP_SELF']."?error=3\">";
|
||||
}
|
||||
|
||||
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 imt_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 imt_userlog (Datum, IP, user_agent, imtuid) VALUES ('$datum', '$ip', '$agent', '$user_admin')");
|
||||
$sql = $db->query ("UPDATE imt_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 "<meta http-equiv=\"refresh\" content=\"0; URL=".$_SERVER['PHP_SELF']."?action=register\">";
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
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 "<meta http-equiv=\"refresh\" content=\"0; URL=".$_SERVER['PHP_SELF']."?action=register&error=4\">";
|
||||
$_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 imt_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 "<meta http-equiv=\"refresh\" content=\"0; URL=".$_SERVER['PHP_SELF']."?action=register&error=5\">";
|
||||
$_SESSION["register_jahrgang"] = $jahrgang;
|
||||
exit;
|
||||
}
|
||||
|
||||
if ($jahrgang == ""){ //Fehler, falls Pflichtfeld Beziehung zur Hochschule nicht gefüllt wurde
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; URL=".$_SERVER['PHP_SELF']."?action=register&error=6\">";
|
||||
$_SESSION["register_ag"] = $ag;
|
||||
exit;
|
||||
}
|
||||
|
||||
$db = dbconnect();
|
||||
$datum=date("Y-m-d H:i:s");
|
||||
$result_1 = $db->query("INSERT INTO imt_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 imt_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 imt_userlog (Datum, IP, user_agent, imtuid) VALUES ('$datum', '$ip', '$agent', '$user_admin')");
|
||||
$sql = $db->query ("UPDATE imt_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");
|
||||
?>
|
Reference in New Issue
Block a user