Grundlagen der CGI-Programmierung Martin Vorländer PDV-SYSTEME GmbH Bornhardtstraße 3 38644 Goslar.

Slides:



Advertisements
Ähnliche Präsentationen
Aufgabe1: Probleme mit Seife
Advertisements

Seminar Internet Technologien SS 98
Dominic Ziegler 12c Webprogrammierung.
HTTP – Hypertext Transfer Protocol
ASP.NET Tips & Tricks Uwe Baumann
Inhalt – Technische Grundlagen
Basis-Architekturen für Web-Anwendungen
© 2003 Guido Badertscher Spontane Vernetzung - UPnP 9. Jänner 2004 Spontane Vernetzung Guido Badertscher.
4. Serverbasierte Programmierung: Perl 4.1Grundlagen 4.1.1HTTP-Server und CGI-Schnittstelle 4.1.2Formulare 4.1.3Ein einfaches Perl Programm 4.2Interaktion.
Vs Das World-Wide Web ist ursprüglich keine Middleware, sondern ein Internet-Dienst zur Beschaffung von Dokumenten (downloading) aus entfernten.
Tomcat Web-Server installieren
Client für XML Application Platform Siemens OpenStage
HTML - Einführung Richard Göbel.
Internet Protokolle und Formate 1.1 HTTP 1.2 HTML 1.3 SGML 2. XML 3. WAP Matthias Thränhardt Sebastian Weber.
Suchmaschine vs. Katalog Such-Robots i.d.R. werden alle Seiten erfasst täglich werden mehrere Mio. Seiten besucht Redaktion relativ wenig Seiten erfasst.
HTTP HyperText Transfer Protocol -
XForms Von Matthias Keck.
Oracle WebServer - Einführung. © Prof. T. Kudraß, HTWK Leipzig Oracle Web Application Server HTML WebServer ® File system Static HTML PL/SQL Packages.
Multimedia - Datenformate
Seminar Internet Technologien
Einführung MySQL mit PHP
Seite Common Gateway Interface. Konzepte. Übersicht 1Einleitung 2Was ist CGI? 3Wozu wird CGI verwendet? 4Geschichtlicher Überblick 5Grundvoraussetzungen.
Jetzt lernen wir.
FH-Hof HTML - Einführung Richard Göbel. FH-Hof Komponenten des World Wide Webs WWW Browser HyperText Transfer Protocol (HTTP) via Internet WWW Server.
von Julia Pfander und Katja Holzapfel E 12/2
Welche Funktion hat die php.ini? -Beinhaltet wichtige Einstellungen für PHP. Genannt seien hier u.a. der Speicherort von Cookies, Parameter der Kompilierung,
Wir bauen uns eine Webapplikation!
Client-Server Modell Advanced IT Basics Nicolas Frings.
Die .NET Common Language Runtime
Die .NET Common Language Runtime
Formulare definieren Formular einleiten mit <form>
OpenStack Jörn Esdohr | Oktober 2012, Dortmund.
Präsentation von Sonja Pathe
UNIVERSITÄT ZU KÖLN HISTORISCH-KULTURWISSENSCHAFTLICHE INFORMATIONSVERARBEITUNG REUSABLE - CONTENT SS 2013 MARIA WAGNER ReST.
Client-Server Systeme
Grundlagen: Client-Server-Modell
Das Client/Server – Modell und die XAMPP-Distribution
Julia Grabsch Florian Hillnhütter Fabian Riebschläger
Client Server Modell Universität zu Köln
Wird ganz am Anfang der HTML-Datei geschrieben Doctype html public bedeutet, dass man sich auf die Öffentlichkeit der html-dtd bezieht Html ist die meist.
IFB Speyer Daniel Jonietz dj 2 XAMPP - Was ist das? Paket mit: – X – Apache (Webserver) – MySQL oder SQLite (Datenbank) – Perl (Skriptsprache) –
Entwicklung verteilter Anwendungen II, SS 13 Prof. Dr. Herrad Schmidt SS 13 Kapitel 4 Folie 2 REST Web Services (1)
CGI (Common Gateway Interface)
Dynamische Webseiten-Generierung
Einführung in PHP.
Einführung in PHP 5.
Webseiten mit PHP, SQL, XML und Webservices Anhand praktischer Beispiele.
Mag. Andreas Starzer weloveIT – EDV Dienstleistungen
Netzwerke.
HTTP IT-Zertifikat Universität zu Köln Allgemeine Technologien II
Das Internet Inhalt: Geschichte Netzschema
Formulare in HTML.
SharePoint 2013 Web Services
SOAP.
Willkommen zum Brückensemester
prof. dr. dieter steinmannfachhochschule trier © prof. dr. dieter steinmann Folie 1 vom Montag, 30. März 2015.
->Prinzip ->Systeme ->Peer – to – Peer
Formulare Vanessa Kogelbauer.
Datenbanken im Web 1.
Internet-Grundtechnologien. Client / Server Client („Kunde“): fordert Information / Datei an im Internet: fordert Internetseite an, z.B.
Webserver Apache & Xampp Referenten: Elena, Luziano und Sükran
Internet - Grundbegriffe Unterlagen zum Kurs "Wie erstelle ich eine Homepage?"
HTML-Workshop: Formulare 1 HTML Formulare Hani Sahyoun RZ Uni Hohenheim.
Das Internet Ein Netzwerk, das viele Rechner miteinander verbindet
1 Servlets Stephan Baldes. 2 Was ist ein Servlet? S E R V L E T = Eine auf Java-Technologie basierte Web-Komponente, die von einem Container.
Dynamische Webseiten CGI & co. © CGI - Lösung für alle ? Ja CGI kann alles tun, was man für Anwendungen braucht flexibel (beliebige.
LINUX II Unit 7 LAMP Server. LAMP ● Linux – Apache - MySQL – PHP ● Leistungsfähiges und kostenloses System zur Genrierung von dynamischen Webseiten und.
Mailprotokolle Internet- Grundtechnologien Allgemeine Technologie II WS 08/09 2 Gliederung I.Aufbau einer II.Protokollarten III.Mailprotokolle.
Prof. Dr.-Ing. Franz-Josef Behr Geodaten und Datenmodell
 Präsentation transkript:

Grundlagen der CGI-Programmierung Martin Vorländer PDV-SYSTEME GmbH Bornhardtstraße Goslar

CGI-Programmierung Was ist CGI? Common Gateway Interface Protokoll für die Kommunikation zwischen Webserver und externen Programmen dynamische Erzeugung von Webserver-Ausgaben z.B. HTML, Bilder, PDF,... Verarbeitung von Formularen Gästebücher, Besucher-Zähler, Chatrooms,... entwickelt für den Ur-Webserver NCSA HTTPd bis jetzt existiert kein RFC dafür!

CGI-Programmierung Wie funktioniert CGI? Webserver host, Port 80 WWW_ROOT:[BIN] HELPGATE.COM GET /htbin/helpgate/help HTTP/ REQUEST_METHOD == GET SCRIPTNAME == /htbin/helpgate PATH_INFO == /help SERVER_NAME == host... Status: 200 OK Content-Type: text/html... HTTP/ OK MIME-Version: 1.0 Date:... Content-Type: text/html...

CGI-Programmierung Wie funktioniert CGI? Webserver weiß durch Konfiguration, welches Verzeichnis CGI-Skripte enthält, und wie diese zu behandeln sind Datenübergabe Meta-Variablen (i.d.R. Environment-Variablen) Standard Input Kommandozeile (nur in Spezialfällen) Standard Output als Programmiersprachen eignen sich z.B. C, C++, Pascal, aber auch Interpreter (z.B. Perl, Python, Tcl)

CGI-Programmierung URIs (Uniform Resource Identifiers) auch URLs (Uniform Resource Locators) Format für absoluten HTTP-URI: Default für port : 80 path : hierarchischer Pfad zur Ressource, Pfadtrenner ist /, muß kein physikalisch vorhandener Pfad sein! Format für query : name=wert&name=wert... keyword+keyword... fragment : Sprungziel innerhalb einer HTML-Resource

CGI-Programmierung URI-Encoding nicht-reservierte Zeichen: a-z A-Z _. ! ~ * ' ( ) reservierte Zeichen: ; / ? & = + $, sonstige Zeichen sollten nicht enthalten sein reservierte (und sonstige) Zeichen müssen kodiert werden Kodierung: % und zwei Hexadezimal-Ziffern z.B. %20 für Leerzeichen

CGI-Programmierung HTTP (HyperText Transmission Protocol) Anfrage-/Antwort-Protokoll Anfrage besteht aus Anfrage-Methode, Anfrage-URI, Protokollversion z.B. GET HTTP/1.0 MIME-Kopfzeilen mit Zusatz-Information evtl. einem Anfrage-Rumpf Antwort besteht aus Protokollversion, Status-Code MIME-Kopfzeilen mit Meta- und Zusatz-Information evtl. einem Antwort-Rumpf

CGI-Programmierung MIME (Multipurpose Internet Mail Extensions) 1 Problem: RFC 822 definiert Nachrichten-Format nur für 7-Bit-Zeichen und maximal 1000 Zeichen/Zeile MIME-Kopfzeilen MIME-Version: 1.0 Content-Type: type / subtype [; param=value ] z.B. text/plain; charset=ISO oder image/gif Content-Transfer-Encoding Werte: 7bit, 8bit, binary, base64, quoted-printable Content-ID Content-Description

CGI-Programmierung MIME (Multipurpose Internet Mail Extensions) 2 mehrteilige Rümpfe möglich Content-Type: multipart/mixed; boundary=XYZ der Kopf jedes Rumpf-Teils enthält höchstens Content-* Kopfzeilen Einleitung für jeden Rumpf-Teil: --XYZ Abschluß des letzten Rumpf-Teil: --XYZ--

CGI-Programmierung Meta-Variablen 1 REQUEST_METHOD GET / POST GET für Anfragen ohne Seiteneffekte (Konvention!) HEAD Kopf-Daten der entsprechenden GET-Anfrage (ohne Rumpf) PUT DELETE OPTIONS TRACE

CGI-Programmierung Meta-Variablen 2 QUERY_STRING Daten hinter dem ? des Anfrage-URI genau so, wie die Anfrage gestellt wurde, d.h. URI-kodiert PATH_INFO Daten im Pfad-Teil des Anfrage-URI hinter dem Namen des CGI- Skripts PATH_TRANSLATED Versuchte Übersetzung von PATH_INFO in einen physikalischen Pfad

CGI-Programmierung Meta-Variablen 3 CONTENT_TYPE und CONTENT_LENGTH Informationen über Daten im Rumpf der Anfrage SCRIPT_NAME Teil des Anfrage-URI mit URI-Pfad und Name des CGI-Skripts REMOTE_ADDR und REMOTE_HOST REMOTE_HOST i.d.R. nicht gesetzt REMOTE_USER und AUTH_TYPE nur gesetzt bei authentisierten Anfragen REMOTE_IDENT

CGI-Programmierung Meta-Variablen 4 SERVER_NAME Host-Teil des Anfrage-URI SERVER_PORT Port-Teil des Anfrage-URI oder der tatsächliche Port SERVER_SOFTWARE SERVER_PROTOCOL i.d.R. "HTTP/1.0" oder "HTTP/1.1" GATEWAY_INTERFACE i.d.R. "CGI/1.1"

CGI-Programmierung Meta-Variablen 5 HTTP_* zusätzliche HTTP-Kopfzeilen vom Klienten, z.B. HTTP_ACCEPT HTTP_USER_AGENT HTTP_REFERER je nach Webserver zusätzliche Variablen z.B. bei Apache: DOCUMENT_URI DOCUMENT_ROOT FILEPATH_INFO

CGI-Programmierung HTML-Eingabemöglichkeiten ISINDEX HTML-HEAD-Element FORM ACTION URI des aufzurufenden CGI-Skripts METHOD GET oder POST ENCTYPE Default: application/x-www-form-urlencoded Spezialfall: multipart/form-data

CGI-Programmierung HTML-Formulare INPUT TYPE TEXT, PASSWORD CHECKBOX, RADIO IMAGE HIDDEN SUBMIT, RESET FILE (Erweiterung zum HTML- Standard) nur mit METHOD=POST erlaubt! TEXTAREA SELECT / OPTION

CGI-Programmierung Kodierung der Formulardaten 1 bei normaler FORM Leerzeichen in Feldnamen und -werten werden durch + ersetzt URI-Encoding der Feldnamen und -werte Feldnamen und -werte werden mit = zusammengesetzt alle solchen Strings werden mit & oder ; zusammengesetzt dieser String wird bei METHOD=GET mit ? an die ACTION-URI angehängt bei METHOD=POST als Rumpf verschickt

CGI-Programmierung Kodierung der Formulardaten 2 bei FORM mit INPUT TYPE=FILE MIME-Nachricht mit Content-Type: multipart/form-data; boundary=... pro Eingabefeld ein Rumpf-Teil mit Content-Disposition: form-data; name="name" [; filename="filename"] Content-Type: type/subtype bei ISINDEX URI-Encoding der Schlüsselwörter Schlüsselwörter werden mit + zusammengesetzt dieser String wird mit ? an die Basis-URI angehängt

CGI-Programmierung Datenübergabe bei FORM METHOD=GET über QUERY_STRING bei FORM METHOD=POST über Standard Input end-of-file kann fehlen! Länge in CONTENT_LENGTH bei ISINDEX über QUERY_STRING kann auch über die Kommandozeile

CGI-Programmierung Ausgabe 1 nach Standard Output Parsed Header-Skripts CGI-Kopfzeilen (werden vom Webserver ausgewertet) Status Content-Type Location dann keine HTTP-Kopfzeilen! HTTP-Kopfzeilen z.B. Expires

CGI-Programmierung Ausgabe 2 Non-Parsed Header-Skripts (NPH) müssen komplette HTTP-Nachricht ausgeben 1. Zeile: HTTP-Statuszeile, z.B. HTTP/ OK HTTP-Kopfzeilen Date, z.B. Thu, 30 Mar :25:00 GMT Server Kennzeichnung für den Webserver ist implementationsabhängig Apache: Dateiname beginnt mit "nph- Microsoft IIS: Alle Skripte sind NPH-Skripte

CGI-Programmierung Status-Codes 1xxInformation erst genutzt ab HTTP/1.1 2xxErfolg 3xxUmleitung 4xxKlienten-Fehler 5xxServer-Fehler

CGI-Programmierung Tipps Das aktuelle Verzeichnis wird vom Standard nicht festgelegt! Das Akte-X-Motto: Trust Noone! (und schon gar nicht dem Klienten) kein Ausführen von Programmen mit Daten vom Klienten, ohne daß diese geprüft werden! Perl: 'eval'-Gefahren, -T C: popen(), system(), Escapen (mit \) von Sonderzeichen Interpreter darf nicht vom Webserver aus erreichbar sein!

CGI-Programmierung Literatur 1 RFCs 822Text Message Format 1738URLs 1808relative URLs 2396URIs 1945HTTP/ HTTP/ MIME 1866HTML Form-Based File Upload ftp://ftp.isi.edu/in-notes/rfcXXXX.txt

CGI-Programmierung Literatur 2 CGI Standard (RFC-Projekt) CGI Programming FAQs auch

CGI-Programmierung Literatur 3 CGI Tutorials auch news:comp.infosystems. CGI und Sicherheit

CGI-Programmierung Literatur 4 C Perl zeitung.de/~hschomae/perl/file_upload_german.htm news:de.comp.lang.perl.cgi

CGI-Programmierung Literatur 5 CGI-Skripte