Ja, wie gesagt, diese Doku ist echt gut, aber ich suche auch eher die direkte Verwendung im Code, wie ist das Scipt aufgebaut, überprüft ihr auf bestimmte Parameter, benutzt ihr zwingend Cookies, IP-Sperre etc.
Mein Ansatz sieht im MOment so aus:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# ---- CGI
my $cgi = CGI->new(); # neues CGI-Objekt erzeugen
my $query = $cgi->Vars(); # Parameter in Hash einlesen
# ---- SESSION - Settings (wird erst nach Login erstellt)
$ldata->{'data'}->{'sessionFolder'} = File::Spec->tmpdir() if File::Spec->tmpdir();
my $session = new CGI::Session(undef, $cgi, {Directory=>$ldata->{'data'}->{'sessionFolder'}});
$session->name("sid");
$session->expire($ldata->{'data'}->{'sessionExpires'});
$session->load_param($cgi); # felder angeben?
# ---- TEMPLATE
my $template = HTML::Template->new(
filename => $ldata->{'data'}->{'main_template'},
die_on_bad_params => $ldata->{'data'}->{'template'}->{'die_on_bad_params'},
vanguard_compatibility_mode => $ldata->{'data'}->{'template'}->{'vanguard_compatibility_mode'},
strict => $ldata->{'data'}->{'template'}->{'strict'},
associate => [$cgi, $session],
case_sensitive => 1,
); #
$ldata->setGlobTemplateVars( $template );
# --------------------------------------------------------
# LOGIK
# --------------------------------------------------------
if( $session->param('logedIn') ) { # wenn session existiert
# -------------- main-logic-part
$ldata->setSeite( $template, 'Administration', "Session: $session->id(); Status: " . $session->param('logedIn') );
# -------------- /main-logic-part
}else{ #wenn keine session existiert / session nicht gültig ist
if(exists($query->{'action'})
and defined($query->{'action'})
and $query->{'action'} eq 'login'
and exists($query->{'usn'})
and defined($query->{'usn'})
and exists($query->{'pwd'})
and defined($query->{'usn'}) ){
# Wenn Login, Action, USN und PWD übergeben, Validate!
if( main::login( $query->{'usn'}, $ldata, $dbh ) ){
# Fehler beim Login (falscher USN | falsches PWD), erneut einloggen
$ldata->setSeite( $template, 'Login - Fehler', main::getTemplate('s_login', $ldata, [$template]) );
}else{
# Login ok, weiter
main::setLoginDaten( $session, $cgi );
# -- Ausgabe setzen
$ldata->setSeite( $template, 'Login erfolgreich', main::getTemplate('s_login_succes', $ldata, [$template]) );
}
}else{
# Erstaufruf Login-Form
$ldata->setSeite( $template, 'Login', main::getTemplate('s_login', $ldata, [$template]) );
}
}
# -- Ausgabe
print $cgi->header(-expires=>'+1s',
-type=>'text/html',
-cookie=> $cgi->cookie( 'sid' => $session->id() ),
);
warningsToBrowser(1);
main::setBenchmark( $template ); # Benchmark
print $template->output();
Und da das nicht wirklich viel ist, bzw. auch ncoh nicht geht ( :blush: ) dachte ich mir, ich sehe mir mal ein Beispiel der Verwendung davon an.
mfg pktm
EDIT: Code aktualisiert\n\n
<!--EDIT|pktm|1081705608-->