Thread CGI::Session und HTML-Seiten
(10 answers)
Opened by eyekona at 2013-08-19 11:51 QuoteNein. Frameseiten sind unpraktisch zu handeln. Ich empfehle eher ein Template-System. Da kannst du die HTML-Seiten weiter benutzen, mit Variableninhalten versehen und in Abhängigkeit andere Inhalte ausgeben. Das Perl-Programm nimmt die Anfragen entgegen (es kann auch je nach Server als CGI-Handler dienen), prüft per CGI::Session ob eingeloggt ist und gibt dann das HTML per Template aus. Hast du schon mal Templatesysteme angesehen? HTML::Template::Compiled HTML::Template Ein paar Beispielschnippsel. index.html Code (html): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <html> <body> <%IF .loggedin %> <!-- hier erlaubte Inhalte nach login --> <h1>Willkommen!</h1> <p>Schön, dass du da bist, <%= .username %></p> <%ELSE%> <form action="#" method="post"> <input mame="username" value="<%= .username %>"> <input mame="password" value="<%= .password %>"> <input type="submit"> </form> </%IF%> </body> </html> index.pl Code (perl): (dl
)
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 use CGI::Session; use HTML::Template::Compiled; sub check_login { my $user = shift; my $pw = shift; # Teste ob login gültig und gib true zurück return 1 if ($user eq 'test' and $pw eq 'gehweg123geheim'); # oder sonstige Methode zum Test der Logindaten # sonst kein gültiges Login return; } my $htc; my $session = new CGI::Session; my $loggedin = $session->param('LOGGEDIN') == 1; if (not $loggedin) { $loggedin = check_login($session->param('username'), $session->param('password')); $session->param('LOGGEDIN' => $loggedin); # Login in Session sichern } $htc = HTML::Template::Compiled->new( filename => '/var/www/vhosts/example.org/httpdocs/index.html' ); $htc->param( username => $session->param('username'), password => $session->param('password'), loggedin => $loggedin ); print $session->header, $htc->output; 1; |