1 / 23

CGI (Perl)

CGI (Perl). Seminar Internettechnologie WS 2006/2007 Serak Rezane 12.01.2007. The Big Picture. :: Live Demo. Gliederung. CGI (Common Gateway Interface) Idee/Prinzip Funktionsweise Perl Allgemein Funktionsumfang Beispiele Zusammenspiel Perl/CGI. CGI :: Allgemein.

kanoa
Download Presentation

CGI (Perl)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CGI (Perl) Seminar Internettechnologie WS 2006/2007 Serak Rezane 12.01.2007

  2. The Big Picture :: Live Demo

  3. Gliederung CGI (Common Gateway Interface) • Idee/Prinzip • Funktionsweise Perl • Allgemein • Funktionsumfang • Beispiele Zusammenspiel Perl/CGI

  4. CGI :: Allgemein • Bis Anfang der 90er Jahre waren dynamische Inhalte im Internet nur durch Umschreiben der Serversoftware möglich. • 1992 wurde CGI (Common Gateway Interface) für den NCSA-httpd eingeführt. • Entwickelte sich zum Standard, um dynamische Inhalte für das World Wide Web zu erzeugen

  5. CGI :: Prinzip ::Common Gateway Interface • Standard für den Datenaustausch zwischen einem Webserver und weiterer Software (CGI-Programm) • Beschreibt, wie der Server Daten aus einem Request an das CGI-Programm übergibt und • wie die Daten vom CGI-Programm zurück an den Server ausgegeben werden. • Kommunikation: Webserver  CGI-Programm • Standardeingabe STDIN • Standardausgabe STOUT • Umgebungsvariablen (SERVER_NAME, REQUEST_METHOD, QUERY_STRING,…) • weitere HTTP Header (HTTP_USER_AGENT, HTTP_ACCEPTED_LANGUAGE) [Spezifikation: http://hoohoo.ncsa.uiuc.edu/cgi/overview.html]

  6. CGI :: Funktionsweise [Abb.1]

  7. CGI :: Funktionsweise • Beim Aufruf eines CGI-Skripts füllt der Webserver entsprechende Umgebungsvariablen mit Informationen • CGI-Skript liest über den Hash %ENV Umgebungsvariablen, wie z.B. Servernamen bzw. IP • Über STDIN lässt dich der Eingabekanal auslesen • Ergebnisse kann das CGI-Programm über STDOUT ausgeben

  8. CGI :: Fazit :: Vorteile • Kommerziell unabhängig • Kostenlos • Produktübergreifender Standard :: Nachteile • Relativ geringe Geschwindigkeit • Neuer Prozess pro CGI-Aufruf => Lösung durch FastCGI

  9. Perl :: Allgemein Motivation: Werkzeug zur System- und Netzwerkadministration mit der Flexibilität von Sprachen wie z.B. C und der Mächtigkeit von Shell-Kommandos (z.B. grep, cut, sort, sed, etc.)[wikipedia] • 1987 von Larry Wall entwickelt • „Practical Extraction and Report Language” • Skriptsprache (Quelltext wird zur Laufzeit interpretiert ) • (Weitgehend) plattformunabhängig • Dateien enden auf .pl • Aktuelle (stabile) Version 5.8.8. #!/usr/bin/perl –w print “Hello, world!\n";

  10. Perl :: Datentypen :: Skalare Variablen • Beginnen immer mit „$“ z. B. $myVariable, • können Zahlen und Strings beinhalten, • keine Unterscheidung zwischen String, Integer, Float…, • keine explizite Konvertierung nötig, da je nach Kontext interpretiert wird. Zuweisung $prioritaet = 9; # der Variable wird der Wert 9 zugeordnet $prioritaet = “high“; # der gleichen Variable einen String zuordnen $prioritaet = “9“; # akzeptiert werden auch Zahlen als Strings

  11. Perl :: Datentypen :: Arrays • Beginnen immer mit „@“, z. B. @myArray. • Stellen eine Liste von skalaren Variablen dar. Zuweisung @musik = (“jazz“, “klassik“); @mehrmusik = (“rock“, “pop“, @musik); push(@mehrmusik, “alternative“, “rap“);# Liefert neue Länge des Arrays pop(@mehrmusik); # Entfernt das letzte Element Zugriff $mehrmusik[0] # Liefert erstes Element „rock“ $mehrmusik[2] # Liefert drittes Element „jazz“

  12. Perl :: Datentypen :: Assoziative Arrays (Hashes) • Schlüssel-Wert-Paare, die in Hash-Tabellen abgelegt werden. • Beginnen immer mit „%“, z.B. %seminar. • Elemente werden durch Strings referenziert. Zuweisung %studenten = (“123456“,“Serak Rezane“); # Anführungszeichen Pflicht %studenten = (123457 =>“Else Musterfrau“);# ab Perl V5 %studenten{“654321“} = “Max Mustermann“;# weiteres Element # hinzuzfügen Zugriff $studenten{“123456“} # Liefert Serak Rezane Konvertierung @namen = %studenten; # @namen ist ein Array mit allen Stud.-namen.

  13. Perl :: Datentypen :: Operatoren • Arithmetische Operatoren Addition, Subtraktion, Multiplikation, Division, Negation, Potenzieren und Modulo • Gleichheits- und Vergleichsoperatoren Gleich, ungleich, größer, größergleich, kleiner und kleinergleich $a == $b # $a numerisch gleich $b? Achtung: Nicht = verwenden $a eq $b # $a gleicher String wie $b? $a ne $b # $a und $b nicht der gleiche String? • Logische Operatoren and, or, not ($a && $b) # ist $a und $b true? ($a || $b) # ist entweder $a oder $b true?

  14. Perl :: Datentypen :: Filehandles open(INFO, “>Datei.txt”); # schreiben print INFO “Dies ist ein Text.\nDas ist die zweite Zeile.\n”; close(INFO); open(MOREINFO, “>>Datei.txt”); # anhängen print MOREINFO “Eine weitere Zeile.\n”; close(MOREINFO); open(READINFO, “Datei.txt”); while (<READINFO>){ # zeilenweise einlesen print $_; # enthält aktuelles Element }

  15. Perl :: Kontrollstrukturen :: Schleifen • foreach  Für das Durchlaufen von Listen und Arrays. • if, for & while  Wie in C. :: Sonstige • Bool`sche Operatoren true: Jeder nicht leere String und jede Zahl ungleich Null.  “ist wahr“, 23, -1, false: Die Zahl Null, Null als String und der leere String.  ““, ‘‘, 0, -0, 0.0, undef, (), Sonderfall: “0“

  16. Perl :: Kontrollstrukturen :: Beispiele for(my $i = 1; $i <= 10; $i++) { print "Hello, world!/n";} my @sachen = ("mein Haus","mein Auto","mein Boot");foreach (@sachen) { print "$_\n";} $x = 1; while($x <= 10) { print "Die Wurzel von ", $x, " ist ", sqrt($x), "\n"; $x++; } $name = “Tommy"; do { print $name, "\n"; $name = “Annika"; }until($name eq “Annika")

  17. Perl :: Subroutinen (Funktionen) ::Syntax sub meineFunktion { # Funktionsdefinition Befehle }; # Funktionsaufrufe &meinefunktion();# oder &meinefunktion; &meinefunktion(parameter1,parameter2); # oder meinefunktion(param1,param2); • Werden mit sub eingeleitet. • Aufruf durch &meinefunktion($param1, …) • Keine Parameterdeklaration bei der Definition nötig. • Zurückgegeben wird der Wert der return-Anweisung oder des zuletzt berechneten Ausdrucks. • Existieren keine Parameter, so können beim Aufruf die Klammern weggelassen werden. • Sind Klammern angegeben, so kann auf das & verzichtet werden.

  18. Perl :: Mustererkennung :: Reguläre Ausdrücke • Muster in Zeichenketten finden und manipulieren. • Eines der wichtigsten und mächtigsten Merkmale von Perl. • Kardinalität mit +,*,{anzahl} • Klassen mit [ ], z.B. [abc], [a-z] oder [0-9] • Mustererkennungs-Operator ist =~ $text =~ m/Hans Eichel/; # true, wenn Hans Eichel vorhanden $text !~ m/Hans/; # true, wenn kein Hans vorhanden $text =~ tr/Hans Eichel/Andrea Ypsilanti/;  # ersetzen $email=“sre@cs.uni-kassel.de“; $email=~m!^\w[\w|\.\-]+@\w[\w\.\-]+\.[a-zA-Z]{2,4}$!;

  19. Perl :: Fazit :: Vorteile • Frei verfügbar  Weit verbreitet • Mächtig beim Umgang mit Text, Dateien und Verzechnissen. • Interaktion mit anderen Anwendungen. • Umfangreiche Modulsammlung (CPAN) • Portabilität (Unix, Linux, Windows, Mac) :: Nachteile • Programmcode kann schnell kryptisch werden  • (Nicht für das Web konzipiert)

  20. CGI(Perl) :: Beispiel :: Live Demo

  21. CGI(Perl) :: Quelltext <HTML> … <BODY> <FORM ACTION="/cgi-bin/name.pl„ METHOD=“POST“> <P>Benutzername: <INPUT NAME=„username"></P> <P>Passwort: <INPUT NAME=„passwort"></P> <P><INPUT TYPE="SUBMIT""> </FORM> </BODY> </HTML>

  22. CGI(Perl) :: Quelltext #!/usr/bin/perl –w # authentifizierung use strict; use CGI qw(:standard); use DBI(); use CGI::Cookie; $cgi = new CGI; # datenbank $dbh = DBI->connect("DBI:mysql:database=“datenbank“; host=localhost:3306", “benutzer", “passwort“); # … query … # Benutzer authentifiziert -> setze cookie $cookie = CGI::Cookie->new(-name => "username", -value => param('username'), -expires => "+1M", -path => "/"); print $cgi->header(-cookie => $cookie), start_html("Anmeldung erfolgreich!"), h1("Anmeldung erfolgreich!"), p("Herzlich willkommen, ", b(param('username'), "!"), a({-href => "/cgi-bin/seminar/user.pl"}, "Weiter geht`s")), end_html();

  23. Quellen Literatur & Online-Quellen http://www.bibsonomy.org/user/siko/perl Abbildungen [Abb.1] CGI: http://www.cyber.ust.hk/handbook3/Image10.gif

More Related