www.farid-hajji.net banner

Farid Hajji

Perl: Einführung, Anwendungen, Referenz (2/e) [Support-Site]

Farid Hajji: Perl - Einführung, Anwendungen, Referenz
2., aktualisierte und erweiterte Auflage
Addison-Wesley Longman, ISBN 3-8273-1535-2

Kapitel 19: CGI und WWW

Inhalt
Synopsis
# Apache-Webserver     http://httpd.apache.org/
# mod_perl             http://perl.apache.org/dist/
# OpenSSL              http://www.openssl.org/
# mod_perl Konfigurieren:
~/mod_perl-x.yz> perl Makefile.PL EVERYTHING=1

# Die Übersetzung und Installation von Apache und mod_perl
# werden im Kapitel selbst erklärt.

# Das CGI.pm-Modul:
use CGI qw(:standard);               # Und weitere Optionen
use CGI::Carp qw(fatalsToBrowser);   # die "..." zum Browser
if (param()) {
    # Brower hat uns Formulardaten geschickt.
    $name = param('myname'); $phone = param('myphone');
    # Daten auswerten, dann irgendeine Antwort senden.
} else {
    # Erstmaliger Aufruf, sende HTML-Formular
    print header,
        start_html($title),
          h1($this_is_an_h1_header), "blah blah", p,
          start_form,
            textfield({ -name => 'myfield', -size => '30' }), ...
            submit({ -value => 'Register!' }), reset,
          end_form,
        end_html;
}

# Tabellen mit CGI.pm:
$htmltable = table( Tr( td( [ @alist ] ) ),
                    Tr( td( [ @alist ] ) ) ... );

# Zustand erhalten mit:
# PATH_INFO, QUERY_STRING, Hidden-Feldern, Cookies,
# Sitzungsnummern. Zustand digital signieren und verschlüsseln.
# Einloggen mit Apache::AuthenDBI für roaming User.
# Persistente Hashes mit Datenbank als Backingstore.
# Das Apache::Session-Modul.

# Cookies:
use CGI::Cookie;
$cookie = new CGI::Cookie(-name => COOKIENAME, -expires => '+5d',
                          -value => $refhash_or_scalar);
print header(-cookie => $cookie);   # Zum Browser senden
$cookievalue = cookie( -name => COOKIENAME );

# Webclients mit der LWP::* libwww-perl-Library
use LWP::UserAgent;
use HTTP::Request;
  $ua = new LWP::UserAgent;
  $ua->agent($browserstring);
  $ua->timeout($time_to_wait_in_seconds);
  $ua->proxy('http' => "http://proxy.isp.net:8080/");
  
  $req = new HTTP::Request 'GET' => $remoteurl;
  $req->authorization_basic($user => $pass);

  $res = $ua->request($req);
  $result = $res->is_success() ?
                  $res->content() :
                  "Err: " . $res->code() . " " . $res->message();

# Authentifikation über MySQL mit Apache::AuthenDBI
ScriptAlias /cgi-bin-secure/ /usr/local/apache/cgi-bin-secure/
<Location /cgi-bin-secure/>
    AuthName    'Secure Testarea'
    AuthType    Basic
    PerlAuthenHandler Apache::AuthenDBI
    PerlSetVar Auth_DBI_data_source dbi:mysql:database=www
    PerlSetVar Auth_DBI_username    nobody
    PerlSetVar Auth_DBI_password    wwwpass
    PerlSetVar Auth_DBI_pwd_table   wwwusers
    PerlSetVar Auth_DBI_uid_field   username
    PerlSetVar Auth_DBI_pwd_field   password
    require valid-user
</Location>

# Einstellung einer Apache::Registry-Umgebung:
# In conf/startup.pl werden Module vorgeladen.
PerlRequire             conf/startup.pl
PerlFreshRestart        On
Alias /perl/ /usr/local/apache/cgi-perl/
<Location /perl>
    SetHandler  perl-script
    PerlHandler Apache::Registry
    Options     ExecCGI
</Location>

# Einige Einträge in conf/startup.pl:
#!/usr/local/bin/perl
BEGIN { use Apache (); use lib Apache->server_root_relative('lib/perl'); }
use Apache::Registry (); use Apache::Constants (); use CGI qw(-compile :all);
1;
Beispielprogramme
httpd.conf Anfangskonfiguration des Apache-Webservers
cgi-welcome.pl Zeigt eine kurze CGI-Begrüssung an
cgi-welcome-gd.pl Eine dynamische GIF-Datei mit GD.pm
cgi-printenv.pl Zeigt die CGI-Umgebungsvariablen an
cgi-input.pl Liest Daten von einem Eingabeformular
cgi-s-pathinfo.pl Zustandserhaltung mit PATH_INFO
cgi-s-query.pl Zustandserhaltung mit QUERY_STRING
cgi-s-hidden.pl Zustandserhaltung mit Hidden-Feldern
cgi-s-cookie.pl Zustandserhaltung mit Cookies
cgi-s-cookie-md5.pl Zustandserhaltung mit Cookies, MD5-Signatur
cgi-s-cookie-crypt.pl Zustandserhaltung: Cookies, MD5-Signatur, Verschlüsselung
cgi-s-server.pl Zustandserhaltung: serverseitig, Sitzungscookies
cgi-s-roaming.pl Zustandserhaltung: serverseitiger, Benutzerauthentifikation
lwp-simple.pl Holt Webseite auf einfachste Art und Weise
lwp-uasimple.pl Informationen anfordern mit dem UserAgent
lwp-uaagent.pl Browserstring explizit setzen mit LWP::UserAgent
lwp-uatimeout.pl Seite mit Timeout anfordern
lwp-uaproxy.pl Anfordern einer Seite durch einen Proxyserver
lwp-uaRobotUA.pl Seite anfordern mit Robots-Exclusion-Standard
lwp-uapost.pl Formular ausfüllen und Antwort des Servers lesen
lwp-uacredentials.pl Basic Authentication mit LWP::UserAgent
startup.pl mod_perl Apache-Startup-Datei
Ergänzungen
Lösungen zu ausgewählten Übungsaufgaben

In Vorbereitung

FAQ
Errata
Errata des 1. Nachdrucks:

[Prev] [Up] [Next]

[Alte Quelle]


Last modified: $Date: 2006/05/18 12:55:43 $
FH. Search :: Sitemap :: Disclaimer :: Copyright :: Privacy
FreeBSD Logo