StartseiteWebPerl im Web

Modul CGI

01. AUGUST 2011
von Jörg
Web - Perl im Web

Mit dem CGI-Modul kann mittels Perl eine dynamische HTML Seite erstellt werden.
Das Modul enthält eine Vielzahl von Möglichkeiten:

  • übergebene Paramter erfassen
  • erstellen von HTML-Code (HTML-Seite)
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
#!/usr/bin/perl -w
                              
#Skriptname:  index.pl
#Funktion:    Indexseite von Webdesign Haefner
#Autor:       Jörg Häfner
#Datum:       07.10.2011

use strict;
use CGI;
use CGI::Carp qw(fatalsToBrowser);  #Nur für Testumbegung

my $cgi = new CGI;
print $cgi->header();

print "<h1>Hallo Welt! :)</h1>";

Anfangs kommt, wie immer, der Shebang. Dann habe ich mir angewöhnt eine Headerinfo in jede Datei einzufügen, wo Skriptname, Funktion der Datei, Autor und Erstelldatum aufgeführt werden.
use strict; um die Variablendeklaration zu "erzwingen".
Dann wird das Modul CGI mit use CGI; eingebunden. Das mögliche Fehler im Quellcode auch im Browser selbst ersichtlich werden, wird die Zeile 10 (fatalsToBrowser) eingefügt, welche nach der Fertigstellung gelöscht werden kann.
In Zeile 12 wird ein Objekt von dem Modul CGI erzeugt. Danach ein Header der für die HTML-Ausgabe im Browser nötig ist.

CGI- Header

Die Subroutine header() erzeugt einen Header als String für die Seite. Wenn der Methode keine Paramter übergeben werden, erstellt sie einen Defaultheader mit Content-Type text/html.
Hier ein paar Einstellungen die mit Hilfe von Parametern vorgenommen werden können:

  • -type Content-Type
  • -cookie Browsercookie
  • -status Statuscode
Mit der Methode start_html() wird der HTML-Header erzeugt:
  • -title Seitentitel
  • -style stylesheets
  • -script Skripte (Javascript)
  • -author Autor
  • -meta Meta-Daten (keywords, description)

Hier einige Beispiele im Quellcode:

01
02
03
04
05
06
07
08
my $cgi = new CGI;
# Ein Cookie wird erstellt mit 30min Lebzeit und Wert 23212
my $cookie = $cgi->cookie( -name=>"pingu", -expires=>"30m", -value=>"23212", -path=>"/");
print $cgi->header( { "cookie" => $cookie }, -type=>"text/html" );                           
print $cgi->start_html( -title  => "Seitentitel", 
                        -style  => { -src => "style.css"}, 
                        -script => { -language => "javascript", -src => "js/main.js"},
                        -meta   => { "cache-control" => "no cache"} );

Paramterübergabe

Die Parameter werden mit GET oder POST an das Skript übergeben. Bei normaler Paramterübergabe wird dies über der URL geschehen, nach der eigentlichen URL signalisiert das Fragezeichen den Anfang der Paramter:
www.domain.de?param1=value&param2=value

Jetzt müssen die Paramter nur noch vom Skript abgefangen werden, dies kann folgendermaßen geschehen:

01
02
03
04
05
06
my $param1 = $cgi->param("param1");
my $param2 = $cgi->param("param2");

print "<h1>Hallo Welt! :)</h1>";
print $cgi->p("1. Parameter - Wert: ".$param1);
print $cgi->p("2. Parameter - Wert: ".$param2);

HTML-Tags mit CGI

Im CGI-Modul gibt es viele Methoden mit denen HTML-Tags erstellt werden können. Hier einige Beispiele:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
print $cgi->p( { -id=>"id_p"}, "test p");
print $cgi->div( { -class=>"id_p"}, "test div");
print $cgi->start_div( { -class=>"id_p"}, "start div");
print $cgi->img({ -height=>97, -width=>900, -alt=>"Bild", -src=>"images/pic.png" });
print $cgi->end_div( { -class=>"id_p"}, "start div");
print $cgi->span( $cgi->a({ -href=>"?param1=erster&param2=zweiter", target => "_blank"}, "LINK") );

print 
  $cgi->start_div({id => "wares"}),
    $cgi->p("Lager:"),     
    $cgi->start_table({-cellspacing => 4, -cellpadding => 4, -border => 1}),
      $cgi->Tr($cgi->th({-align => "left"}, $cgi->a({-href => "?ware=holz"}, "Holz:") ),
        $cgi->td({-align => "right", -id=>"holz" }, "200" )),
      $cgi->Tr($cgi->th({-align => "left"}, $cgi->a({-href => "?ware=fisch"}, "Fisch:") ),
        $cgi->td({-align => "right", -id=>"fisch" }, "400" )),
    $cgi->end_table(),
  $cgi->end_div();
  
print $cgi->start_form(-action => "index.pl", -method => "get"); 
 print $cgi->input({type=>"hidden", value=>"home", name=>"aktion"});
 print $cgi->input({type=>"hidden", value=>"tools", name=>"show"});
 print $cgi->input({type=>"text", value=>"eingabe", name=>"eingabe"});                
 print $cgi->submit( -name=>"submit", -value => "submit1", -class=>"button"); 
print $cgi->end_form();  

print $cgi->end_html();

Das komplette Skript zum testen:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/usr/bin/perl -w
                              
#Skriptname:  index.pl
#Funktion:    Indexseite von Webdesign Haefner
#Autor:       Jörg Häfner
#Datum:       07.10.2011

use strict;
use CGI;
use CGI::Carp qw(fatalsToBrowser);  #Nur für Testumbegung

use HTML::Template;

my $cgi = new CGI;
# Ein Cookie wird erstellt mit 30min Lebzeit und Wert 23212
my $cookie = $cgi->cookie( -name=>"pingu", -expires=>"30m", -value=>"23212", -path=>"/");
print $cgi->header( { "cookie" => $cookie }, -type=>"text/html" );                           
print $cgi->start_html( -title  => "Seitentitel", 
                        -style  => { -src => "style.css"}, 
                        -script => { -language => "javascript", -src => "js/main.js"},
                        -meta   => { "cache-control" => "no cache"} );

my $param1 = $cgi->param("param1");
my $param2 = $cgi->param("param2");

print "<h1>Hallo Welt! :)</h1>";
print $cgi->p("1. Parameter - Wert: ".$param1);
print $cgi->p("2. Parameter - Wert: ".$param2);

print $cgi->end_html();

Kommentare:

http://www.propant.top/p-laid-861.html

von Georgeliz am 30. SEPTEMPER 2016 um 06:08 Uhr » http://www.magicbullet.top/p-laid-9377.html

Hinterlasse einen Kommentar

Ein Frosch der sich an der Seite festhält