<?
function my_mysqli_result($res,$crow,$field)
{
    // Array definieren
    $feldname=array();
    
    // Anzahl der Zeilen/Datensätze der SQL-Abfrage ermitteln
    $num_lines = mysqli_num_rows($res);
       
    if ($num_lines < 1)
    {
        // es gibt keine Datensätze zum Anzeigen
        return false;
    }

    // alle Namen der Tabellenfelder/Tabellenspalten im Array $feldname speichern
    for ($i=0;$feldinfo=mysqli_fetch_field($res);$i++)
    {
        $feldname[$i]=$feldinfo->name;
    }

    // den Ergebniszeiger der SQL-Abfrage wieder zur ersten Tabellenspalte rücksetzen
    mysqli_field_seek($res,0);    
    
    // die gewünschte Zeile d.h. den gewünschten Datensatz suchen
    for ($i=0; $row = mysqli_fetch_row($res); $i++)
    {
        if ($i == $crow) // wenn der gewünschte Datensatz gefunden ist
        {
            // Anzahl der Spalte ermitteln
            $anz_spalten=count($row);
    
            // die gewünschte Spalte d.h. das gewünschte Tabellenfeld suchen
            for ($j=0; $j<$anz_spalten;$j++)
            {
                if ($feldname[$j] == $field) // das gewünschte Tabellenfeld ist gefunden
                {
                    // den Ergebniszeiger der SQL-Abfrage wieder zum ersten Datensatz rücksetzen
                    mysqli_data_seek($res,0);
                    
                    // die Daten im Datensatz sind in derselben Reihenfolge wie 
                    // die Namen der zuvor ermittelten Tabellenfelder. Daher kann 
                    // der Wert des gewünschten Tabellenfeldes zurückgeliefert werden
                    return $row[$j];
                }
            }
        }
    }

    // den Ergebniszeiger der SQL-Abfrage wieder zum ersten Datensatz rücksetzen
    mysqli_data_seek($res,0);
    
    // das gewünschte Tabellenfeld wurde nicht gefunden
    return false;
}

function check_md5_login_db(&$p_user,&$p_email,&$p_pwd)
{
   //Defaultbelegung der lokalen Variablen
   $uid="";
   $email="";
   $pwd="";
   $fixed_pwd="";
   
   // Formulardaten aus der POST-Umgebung auslesen
   if (isset($_POST['uid']) && $_POST['uid'] != "")
   {
      $uid=$_POST['uid'];
   }

   if (isset($_POST['email']) && $_POST['email'] != "")
   {
      $email=$_POST['email'];
   }

   if (isset($_POST['pwd']) && $_POST['pwd'] != "")
   {
      $pwd=$_POST['pwd'];
   }
   
   // Sicherheitsdaten inkludieren
   include("../sec/data.php");

   //Verbindung zum Datenbankserver aufbauen 
   $con=mysqli_connect("localhost",$hk_db,$hk_pw,"leiserberge_at"); 
   if (!$con)
   {
      echo ("Verbindung zu DB-Server/Datenbank kann nicht hergestellt werden: ".mysqli_connect_error()."<br>");
      return false;
   }

   mysqli_set_charset($con,"utf8");
   
   // SQL-Abfragestring festlegen
   $sqlab="select secpwd from wspassword where uid='".$uid."';";

   // Datenbankabfrage starten
   $res=mysqli_query($con,$sqlab);

   if (!$res)
   {
      // Datenbankabfrage liefert kein Ergebnis
      return false;
   }

   $num=mysqli_num_rows($res);

   if ($num > 1)
   {
      echo("Benutzer mehrmals in Datenbank vorhanden.<br>");
      return false;
   }

   if ($num < 1)
   {
      // Benutzer nicht in Datenbank vorhanden
      return false;
   }

   $fixed_pwd = my_mysqli_result($res,0,"secpwd");

   // inhaltliche Passwortüberprüfung
   if ($fixed_pwd != $pwd)
   {
      return false;
   }

   // Gutfall, alles OK
   // Parameter für die Rückgabe und Rückgabewert setzen 
   $p_user=$uid;
   $p_email=$email;
   $p_pwd=$pwd;
   
   return true;
}

function check_login_db(&$p_user,&$p_email,&$p_pwd)
{
   //Defaultbelegung der lokalen Variablen
   $uid="";
   $email="";
   $pwd="";
   $fixed_pwd="";
   
   // Formulardaten aus der POST-Umgebung auslesen
   if (isset($_POST['uid']) && $_POST['uid'] != "")
   {
      $uid=$_POST['uid'];
   }

   if (isset($_POST['email']) && $_POST['email'] != "")
   {
      $email=$_POST['email'];
   }

   if (isset($_POST['pwd']) && $_POST['pwd'] != "")
   {
      $pwd=$_POST['pwd'];
   }
   
   // Sicherheitsdaten inkludieren
   include("../sec/data.php");

   //Verbindung zum Datenbankserver aufbauen 
   $con=mysqli_connect("localhost",$hk_db,$hk_pw,"leiserberge_at"); 
   if (!$con)
   {
      echo ("Verbindung zu DB-Server/Datenbank kann nicht hergestellt werden: ".mysqli_connect_error()."<br>");
      return false;
   }

   mysqli_set_charset($con,"utf8");
   
   // SQL-Abfragestring festlegen
   $sqlab="select pwd from wspassword where uid='".$uid."';";

   // Datenbankabfrage starten
   $res=mysqli_query($con,$sqlab);

   if (!$res)
   {
      // Datenbankabfrage liefert kein Ergebnis
      return false;
   }

   $num=mysqli_num_rows($res);

   if ($num > 1)
   {
      echo("Benutzer mehrmals in Datenbank vorhanden."."<br>");
      return false;
   }

   if ($num < 1)
   {
      // Benutzer nicht in Datenbank vorhanden
      return false;
   }

   $fixed_pwd = my_mysqli_result($res,0,"pwd");

   // inhaltliche Passwortüberprüfung
   if ($fixed_pwd != $pwd)
   {
      return false;
   }

   // Gutfall, alles OK
   // Parameter für die Rückgabe und Rückgabewert setzen 
   $p_user=$uid;
   $p_email=$email;
   $p_pwd=$pwd;
   
   return true;
}

function check_login_data(&$p_user,&$p_email,&$p_pwd)
{
   //Defaultbelegung der lokalen Variablen
   $uid="";
   $email="";
   $pwd="";
   $fixed_pwd="";
   

   if (isset($_POST['uid']) && $_POST['uid'] != "")
   {
      $uid=$_POST['uid'];
   }

   if (isset($_POST['email']) && $_POST['email'] != "")
   {
      $email=$_POST['email'];
   }

   if (isset($_POST['pwd']) && $_POST['pwd'] != "")
   {
      $pwd=$_POST['pwd'];
   }
   
   // inhaltliche Prüfung des Passwortes
   switch($uid)
   {
      case "herbert.koenig":
     $fixed_pwd="pcz123";   
      break;
      case "PCZ.TGM":
      case "pcz.tgm":
     $fixed_pwd="schule";   
      break;
      default:
         echo("<b>Fehler:</b> unbekannter Benutzer");
         return false;
   }
   
   if ($fixed_pwd != $pwd)
   {
         echo("<b>Fehler:</b> Passwort falsch");
         return false;
   }

   // Gutfall, alles OK
   // Parameter für die Rückgabe und Rückgabewert setzen 
   $p_user=$uid;
   $p_email=$email;
   $p_pwd=$pwd;
   
   return true;

}


function check_login_switch(&$p_user,&$p_email,&$p_pwd)
{
   //Defaultbelegung der lokalen Variablen
   $uid="";
   $email="";
   $pwd="";
   $fixed_pwd="";
   
   //Regular Expression für das Eingabefeld Benutzername
   //Regeln wie bei der TGM-Kennung
   $re_uid="/^[a-zA-Z0-9]{2,}\.[a-zA-Z0-9]{2,}$/";

   //Regular Expression für das Eingabefeld Passwort
   //mindestens fünf Zeichen von a bis z,alle Zahlen und die Zeichen üöäß.:!§$%&/(){}[] sind erlaubt
   $re_pwd="/^[a-zA-Z0-9üöäß\.:!§\$%&\/(){}\[\]]{5,}$/";

   //Regular Expression für das optionale Eingabefeld email
   //Regeln wie bei der TGM-Kennung
   $re_email="/^[a-zA-Z0-9]{2,}\.[a-zA-Z0-9]{2,} tgm.ac.at$/";

   if (isset($_POST['uid']) && $_POST['uid'] != "")
   {
      $uid=$_POST['uid'];
      if (!preg_match($re_uid,$uid))
      {
         echo("<b>Fehler:</b> Benutzername syntaktisch fehlerhaft");
         return false;
      }
   }
   else
   {
      echo("<b>Fehler:</b> Benutzername fehlt");
      return false;
   }

   if (isset($_POST['email']) && $_POST['email'] != "")
   {
      $email=$_POST['email'];
      if (!preg_match($re_email,$email))
      {
         echo("<b>Fehler:</b> E-Mail syntaktisch fehlerhaft");
     return false;
      } 
   }

   if (isset($_POST['pwd']) && $_POST['pwd'] != "")
   {
      $pwd=$_POST['pwd'];
      if (!preg_match($re_pwd,$pwd))
      {
         echo("<b>Fehler:</b> Passwort syntaktisch fehlerhaft");
         return false;
      }
   }
   else
   {
      echo ("<b>Fehler:</b> Passwort fehlt");
      return false;
   }
   
   // inhaltliche Prüfung des Passwortes
   switch($uid)
   {
      case "herbert.koenig":
     $fixed_pwd="pcz123";   
      break;
      case "PCZ.TGM":
      case "pcz.tgm":
     $fixed_pwd="schule";   
      break;
      default:
         echo("<b>Fehler:</b> unbekannter Benutzer");
         return false;
   }
   
   if ($fixed_pwd != $pwd)
   {
         echo("<b>Fehler:</b> Passwort falsch");
         return false;
   }

   // Gutfall, alles OK
   // Parameter für die Rückgabe und Rückgabewert setzen 
   $p_user=$uid;
   $p_email=$email;
   $p_pwd=$pwd;
   
   return true;
}

function set_mysession_mypath()
{
   // absoluten Pfad des aktuellen Verzeichnisses ermitteln
   $cwd=getcwd();

   // Falls im Pfad ein Doppelpunkt vorhanden ist, dann ist es ein ...
   if (strstr($cwd,":")) // Windows-Pfad und damit ein Windows-Rechner
   { 
      ini_set('session.save_path','c:/temp'); //ev. für Windows erforderlich
      ini_set('session.cookie_path','c:/temp'); //ev. für Windows erforderlich
    }
   else //andernfalls ist es ein Unix-Pfad und damit ein Unix-Rechner
   {
      //ini_set('session.cookie_path','/home/pcz'); // für Unix erforderlich
      ini_set('session.cookie_path','/www.leiserberge.at'); // für Unix erforderlich
   }
}

function set_mysession_data($user,$password)
{
    session_start();

   // aktuelle bzw. neue Session-ID ermitteln
   $sid=session_id();
   
   // Session-Variable erzeugen
   $new_sid=session_id();
   $_SESSION["ssid"]=$new_sid;
   $_SESSION["suid"]=$user;
   $_SESSION["spwd"]=$password;   

   // Gutfall, alles OK
   return true;
}

function show_mysession_data()
{
   echo("<b><br>Ihre Session-Daten lauten: </b><br>");
   if (isset($_SESSION["ssid"])!="")
   {
      echo("<b>Session-ID:</b> ".$_SESSION["ssid"]."<br>");
   }
   
   if (isset($_SESSION["suid"])!="")
   {
      echo("<b>Benutzerkennung:</b> ".$_SESSION["suid"]."<br>");
   }

   if (isset($_SESSION["spwd"])!="")
   {
      echo("<b>Passwort:</b> ".$_SESSION["spwd"]."<br>");
   }
}

function check_mysession_data()
{
    session_start();

   if (isset($_SESSION["ssid"])=="")
   {
      // keine Session vorhanden
      return false;
   }
   
   if (session_id() != $_SESSION["ssid"])
   {
      // keine aktuell gültige Session vorhanden
      return false;
   }

   // Gutfall, korrekte Session
   return true;
}

function destroy_mysession()
{
   session_start();
     
   // Die drei persönlichen Session-Variablen werden zerstört 
   // eigentlich wegen nachfolgender Funktion session_destroy() nicht erforderlich 
   session_unset($_SESSION);

   // die gesamte Session wird zerstört
   if (session_destroy())
   {
      return true;
   }
   else
   {
      return false;
   }
}
?>