#! /usr/bin/perl -w # # Dateiname: k001de.pl $Startseite = "k001de.pl"; # Autor: manuel euer # # Das Script erzeugt die Login-fehlgeschlagen-Seite sowie die Login-erfolgreich-Seite # Bei Login-erfolgreich wird die erste Session-ID erzeugt # Perlmodule: use CGI; use DBI; # Eigene Module: require 'k000xx.pm'; # Enthält Prozeduren und Dateipfade # Erzeugen eines neuen CGI-Objektes: my $query = new CGI; # Einlesen und Verarbeiten der übergebenen Parameter: $Benutzer = &zeichen($query->param('formularBenutzer')); $Passwort = &zeichen($query->param('formularPasswort')); $SessionID = &zeichen($query->param('formularSessionID')); $IPAdresse = &zeichen($query->remote_host()); # HTML-Templates definieren: my ($StandardLoginTemplate, $StandardLoginEinleitungTemplate, $StandardLoginFehlgeschlagenTemplate, $StandardLoginTimeoutTemplate, $StandardLoginFormularTemplate, $StandardEingeloggtEinleitungTemplate, $StandardEingeloggtFormularTemplate); $StandardLoginTemplate = "/k001de.htt"; $StandardLoginEinleitungTemplate = "/k002de.htt"; $StandardLoginFehlgeschlagenTemplate = "/k003de.htt"; $StandardLoginTimeoutTemplate = "/k004de.htt"; $StandardLoginFormularTemplate = "/k008de.htt"; $StandardEingeloggtEinleitungTemplate = "/k005de.htt"; $StandardEingeloggtFormularTemplate = "/k009de.htt"; #http-Header ausgeben: print $query->header ( -type=>'text/html', -expires=>'+1h' ); #Datenbankverbindung definieren: my $dbh = DBI->connect ('dbi:mysql:' . $kundenbereichdb,$kundenbereichuser,$kundenbereichpwd) || goto datenbankfehler; if (($Benutzer ne "") || ($SessionID ne "")) { $BenutzerPruefen=$dbh->prepare("select id, kunde, benutzer, passwort, lesen, loeschen from user where benutzer='$Benutzer' and passwort= '$Passwort'") || goto abfragefehler; $returncode=$BenutzerPruefen->execute || die "kann Abfrage nicht ausfuehren\n"; while (my @BenutzerPruefenArray=$BenutzerPruefen->fetchrow_array) { $UID = $BenutzerPruefenArray[0]; } $ausgabe = &schreiben($StandardLoginTemplate); if ($returncode==0) { $LoginDatenHolen=$dbh->prepare("select UNIX_TIMESTAMP() - UNIX_TIMESTAMP(letztezeit), ip from session where sid='$SessionID'") || goto abfragefehler; $sessioncode=$LoginDatenHolen->execute || die "kann Abfrage nicht ausfuehren\n"; if ($sessioncode==0) { $ausgabe = &schreiben($StandardLoginFehlgeschlagenTemplate); $ausgabe = &schreiben($StandardLoginFormularTemplate); } else { while (my @LoginDatenHolenArray=$LoginDatenHolen->fetchrow_array) { $LoginZeit = $LoginDatenHolenArray[0]; $LoginIP = $LoginDatenHolenArray[1]; } if (($LoginZeit <= $zeitlimit) && ($LoginIP == $IPAdresse)) { $BenutzerHolen=$dbh->prepare("select benutzer from user, session where user.id=session.uid and session.sid='$SessionID'") || goto abfragefehler; $BenutzerHolen->execute || die "kann Abfrage nicht ausfuehren\n"; while (my @BenutzerHolenArray=$BenutzerHolen->fetchrow_array) { $Benutzer = $BenutzerHolenArray[0]; } my $SessionIDErneuern=$dbh->prepare("update session set letztezeit=NOW() where sid='$SessionID'") || goto abfragefehler; $SessionIDErneuern->execute || die "kann Eintrag nicht ausfuehren\n"; goto standardausgabe; } else { $LeerlaufMinuten = $zeitlimit / 60; $ausgabe = &schreiben($StandardLoginTimeoutTemplate); $ausgabe = &schreiben($StandardLoginFormularTemplate); } } } else { my $SessionIDSchreiben=$dbh->prepare("insert into session (uid,ip,letztezeit) values ('$UID','$IPAdresse',NOW())") || goto abfragefehler; $SessionIDSchreiben->execute || die "kann Eintrag nicht ausfuehren\n"; $SessionIDHolen=$dbh->prepare("select MAX(sid) from session where uid='$UID'") || goto abfragefehler; $SessionIDHolen->execute || die "kann Abfrage nicht ausfuehren\n"; while (my @SessionIDHolenArray=$SessionIDHolen->fetchrow_array) { $SessionID = $SessionIDHolenArray[0]; } standardausgabe: { $BenutzerpfadHolen=$dbh->prepare("select kunde, pfad from user where benutzer='$Benutzer'") || goto abfragefehler; $BenutzerpfadHolen->execute || die "kann Abfrage nicht ausfuehren\n"; while (my @BenutzerpfadHolenArray=$BenutzerpfadHolen->fetchrow_array) { $Benutzerkonto = $BenutzerpfadHolenArray[0]; $Benutzerpfad = $BenutzerpfadHolenArray[1]; } my $Verzeichnis = "/kunden/78209_10405/kundendaten/" . $Benutzerpfad . "/home"; opendir(DIR, $Verzeichnis) || die "$Verzeichnis: $!"; my @Dateien = readdir(DIR); closedir(DIR); $AnzahlDateien = @Dateien - 2; $ausgabe = &schreiben($StandardEingeloggtEinleitungTemplate); my $Verzeichnis = "/kunden/78209_10405/kundendaten/" . $Benutzerpfad . "/service"; opendir(DIR, $Verzeichnis) || die "$Verzeichnis: $!"; my @DateiNamen = readdir(DIR); closedir(DIR); $AnzahlDateien = @DateiNamen - 2; my @Dateien; for (my $i = 0; $i < @DateiNamen; $i++) { $Dateien[$i][0] = $DateiNamen[$i]; $Dateien[$i][1] = ""; $Dateien[$i][2] = ""; $Dateien[$i][3] = ""; $Dateien[$i][4] = ""; $Dateien[$i][5] = ""; } print "
\n"; print "