Common Gateway Interface

Slides:



Advertisements
Ähnliche Präsentationen
Seminar Internet Technologien SS 98
Advertisements

der Universität Oldenburg
Ein- und Ausgabe von Dateien
Forschungszentrum caesar
Funktionen und Module Einführung anhand des Beispiels Wörter sortieren Timm Grams Fachhochschule Fulda Fachbereich Elektrotechnik und Informationstechnik.
6. Der OpenMP Standard Direktiven-basiertes API zur Programmierung von Parallelrechnern mit gemeinsamem Speicher für FORTRAN, C und C++
4. Serverbasierte Programmierung: Perl 4.1Grundlagen 4.1.1HTTP-Server und CGI-Schnittstelle 4.1.2Formulare 4.1.3Ein einfaches Perl Programm 4.2Interaktion.
Tomcat Web-Server installieren
Java: Dynamische Datentypen
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
Java: Referenzen und Zeichenketten
WHILE - Anweisung.
Der Präprozessor. Bevor der Compiler das Programm in Maschinencode übersetzt (nur dieser kann von der CPU, dem Herz des Computers, bearbeitet werden)
DO...WHILE Anweisung.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 9 Claudio Moraga; Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 7 Claudio Moraga, Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 4 Claudio Moraga; Gisbert Dittrich FBI Unido
Oracle PL/SQL Server Pages (PSP). © Prof. T. Kudraß, HTWK Leipzig Grundidee: PSP – Internet-Seiten mit dynamischer Präsentation von Inhalten durch Einsatz.
Oracle WebServer - Einführung. © Prof. T. Kudraß, HTWK Leipzig Oracle Web Application Server HTML WebServer ® File system Static HTML PL/SQL Packages.
Programmieren mit JAVA Teil V. Grafikausgabe mit JAVA, das AWT Java wurde von Anfang an mit dem Anspruch entwickelt, ein vielseitiges, aber einfach zu.
Brandenburgische Technische Universität Cottbus Program Profiling Andrzej Filipiak Übung Testen von Software SoSe 2006.
Der C-Präprozessor EDV1 - 04Präprozessor.
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Einführung in Java1 Einführung in JAVA.
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Planung einfache Dateibehandlung (externe Dateien, Öffnen, Lesen/Schreiben, Schließen). Diskussion des Problems, die Wörter in einem gegebenen Text.
Seite Common Gateway Interface. Konzepte. Übersicht 1Einleitung 2Was ist CGI? 3Wozu wird CGI verwendet? 4Geschichtlicher Überblick 5Grundvoraussetzungen.
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.
Welche Funktion hat die php.ini? -Beinhaltet wichtige Einstellungen für PHP. Genannt seien hier u.a. der Speicherort von Cookies, Parameter der Kompilierung,
Erste Schritte mit PHP 5 von Max Brandt, 22. September 2006.
Wir bauen uns eine Webapplikation!
Applets Java für’s Web.
IT2 – WS 2005/20061Oct 10, 2005 Externes Verhalten – Quelltext (source code) Durch Aufrufe der Konstruktoren und Methoden kann das externe Verhalten (=die.
Einführung in die Programmiersprache C 3.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.
PHP und MYSQL am Organisatorisches Der komplette Kurs im Schnelldurchgang Bewertung von wichtig und unwichtig Historisch Kulturwissenschaftliche.
Dynamische Webseiten mit PHP [und Python]
Einführung in die Programmiersprache C 4
CGI (Common Gateway Interface)
C-Einstieg. Agenda 1Vorbereitung 2Aufbau eines Programms 2.1Header 2.2 Methoden 2.3Main 3Datentypen & Variablen 4Operatoren(+, -, *, /) 5Logik 5.1IF 5.2Switch.
Die Grundidee Funktionsaufruf Funktionsname (Kopf) Code der Funktion
Einführung in PHP.
Einführung in PHP 5.
Mag. Andreas Starzer weloveIT – EDV Dienstleistungen
Informatik Grundlagen, WS04, Seminar 7
BMEVIEEA100 Grundlagen der Programmierung
PHP PHP ( „PHP Hypertext Preprocessor") ist eine Skriptsprache
Cascading Stylesheets Staffelbare Formatvorlagen sind eine direkte Erweiterung von HTML und gestatten eine exaktere Gestaltung einer Webseite. Seit 1998.
prof. dr. dieter steinmannfachhochschule trier © prof. dr. dieter steinmann Folie 1 vom Montag, 30. März 2015.
1 // Laengste Zeile bestimmen // // Liest die Eingabe Zeichen fuer Zeichen, bis // das erscheint. // Die laengste Zeile wird ausgegeben (bei.
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
HTML-Workshop: Formulare 1 HTML Formulare Hani Sahyoun RZ Uni Hohenheim.
Funktionen. Aufgabe : Eingabe zweier Zahlen ---> Minimum bestimmen Dann nochmals Eingabe zweier Zahlen ---> Minimum bestimmen.
Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.
Inhalte der Übungen 1.Grundlagen, Ein- und Ausgabe 2.Kontrollstrukturen (Projekt 1) 3.Funktionen 4.Zeiger, Felder (Projekt 2) 5.Strings, Strukturen 6.Fileverarbeitung.
ESP Tutorium Studienassistent: Ewald Moitzi Gruppe 1.
HTTP Wie funktioniert das WWW ?. © Architektur Wie funktioniert das eigentlich ? Darstellung: HTML Abwicklung: HTTP Browser Webserver.
Wie funktioniert das World Wide Web ?
Einige Ideen für Module
Entwicklungsumgebung Lazarus
IOStreamLibrary.
Java-Kurs - 4. Übung weitere Kontrollstrukturen
Prof. Dr.-Ing. Franz-Josef Behr Geodaten und Datenmodell
Durchschnitt (verbal)
Nksainf.ch/oinf.
Java-Kurs - 2. Übung primitive Datentypen, Konstanten
IOStreamLibrary.
Versuchsbeschreibung in
CSS.
 Präsentation transkript:

Common Gateway Interface CGI mit C Common Gateway Interface CGI Scripte dienen der dynamischen Erzeugung von Web- Seiten, der html-Code steht nicht in einer html-Datei, sondern wird von einem Programm dynamisch erzeugt. Der Aufruf dieses Programms erfolgt durch den http- Server, wenn er einen entsprechenden Link bekommt. CGI Scripte werden serverseitig ausgeführt, im Gegensatz zu Applets oder java script CGI Scripte können mit den verschiedensten Werkzeugen hergestellt werden, häufige Werkzeuge sind Pearl, C und Shellscriptsprachen

Apache2 konfigurieren Konfigurierung in /etc/apache2 Konfigurationsdateien per link verknüpfen oder kopieren mods-available → mods-enabled userdir.conf, userdir.load cgi.load, cgid.load, cgid.conf Einfügen in userdir.conf: Options +ExecCGI AddHandler cgi-script .cgi .pl

Verzeichnisse Dokumentenwurzel: /var/www oder /srv/www CGI-Verzeichnis: /usr/lib/cgi-bin oder unter der Dokumentenwurzel Dokumente im User-Dir: public_html CGI im User-Dir: public_html/cgi-bin Rechte setzen

#include <stdio.h> #include <ctype.h> int main() { int i,j; printf("Content-Type: text/html"); printf("\n\n") ; puts("<html><head><title>CGI-Script - ASCII Codetabelle</title></head>\n"); puts("<body><h2><hr>\n"); puts("<pre>\n"); for (i=0; i<4; i++)printf("|dec hex Char "); printf("|\n"); for (i=0; i<32; i ++) printf("\n| "); for (j=0; j < 128; j += 128/4) printf("%3d %2X ",i+j,i+j); if (isgraph(j+i))printf(" %c | ",j+i); else printf(" . | "); } puts("</pre><hr>"); puts("<a href=\"http://www.informatik.htw-dresden.de/~beck/a.beck.html\">A. Beck</A> <p>"); puts("</body>\n"); puts("</html>\n"); return 0; Arbeitsschritte: - Quelltext erfassen - Compilieren gcc ascii.c -o ascii.cgi - nach cgi-bin kopieren - Lese-/Ausführungsrechte für alle für ascii.cgi - Aufruf über Browser http://www.htw-dresden.de/~s12355/cgi-bin/ascii.cgi html-Quelltext wird Über die Standardausgabe An den Browser ausgegeben

http://ipc145.informatik.htw-dresden.de/~beck/cgi-bin/ascii.cgi |dec hex Char |dec hex Char |dec hex Char |dec hex Char | | 0 0 . | 32 20 . | 64 40 @ | 96 60 ` | | 1 1 . | 33 21 ! | 65 41 A | 97 61 a | | 2 2 . | 34 22 " | 66 42 B | 98 62 b | | 3 3 . | 35 23 # | 67 43 C | 99 63 c | | 4 4 . | 36 24 $ | 68 44 D | 100 64 d | | 5 5 . | 37 25 % | 69 45 E | 101 65 e | | 6 6 . | 38 26 & | 70 46 F | 102 66 f | | 7 7 . | 39 27 ' | 71 47 G | 103 67 g | | 8 8 . | 40 28 ( | 72 48 H | 104 68 h | | 9 9 . | 41 29 ) | 73 49 I | 105 69 i | | 10 A . | 42 2A * | 74 4A J | 106 6A j | | 11 B . | 43 2B + | 75 4B K | 107 6B k | | 12 C . | 44 2C , | 76 4C L | 108 6C l | | 13 D . | 45 2D - | 77 4D M | 109 6D m | | 14 E . | 46 2E . | 78 4E N | 110 6E n | | 15 F . | 47 2F / | 79 4F O | 111 6F o | | 16 10 . | 48 30 0 | 80 50 P | 112 70 p | | 17 11 . | 49 31 1 | 81 51 Q | 113 71 q | | 18 12 . | 50 32 2 | 82 52 R | 114 72 r | | 19 13 . | 51 33 3 | 83 53 S | 115 73 s | | 20 14 . | 52 34 4 | 84 54 T | 116 74 t | | 21 15 . | 53 35 5 | 85 55 U | 117 75 u | | 22 16 . | 54 36 6 | 86 56 V | 118 76 v | | 23 17 . | 55 37 7 | 87 57 W | 119 77 w | | 24 18 . | 56 38 8 | 88 58 X | 120 78 x | | 25 19 . | 57 39 9 | 89 59 Y | 121 79 y | | 26 1A . | 58 3A : | 90 5A Z | 122 7A z | | 27 1B . | 59 3B ; | 91 5B [ | 123 7B { | | 28 1C . | 60 3C < | 92 5C \ | 124 7C | | | 29 1D . | 61 3D = | 93 5D ] | 125 7D } | | 30 1E . | 62 3E > | 94 5E ^ | 126 7E ~ | | 31 1F . | 63 3F ? | 95 5F _ | 127 7F . | A. Beck

Doku unter http://de.selfhtml.org/html/formulare/definieren.htm Formulare Doku unter http://de.selfhtml.org/html/formulare/definieren.htm <form action="http://myhost/cgi-bin/myprog.cgi" method="get"> <!-- hier folgen die Formularelemente -> </form> Oder post

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HEAD> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> <Title>Demo cgi</Title> <body> <form action="http://192.168.178.92/cgi-bin/democgi.cgi" METHOD="POST"> <P><INPUT TYPE=CHECKBOX NAME="check1" VALUE="" STYLE=" font-family: 'Arial', sans-serif; font-size: 12pt">Plug 1 </P> <P><INPUT TYPE=CHECKBOX NAME="check2" VALUE="" STYLE=" font-family: 'Arial', sans-serif; font-size: 12pt">Plug 2 </P> <P><INPUT TYPE=CHECKBOX NAME="check3" VALUE="" STYLE=" font-family: 'Arial', sans-serif; font-size: 12pt">Plug 3 </P> <P><INPUT TYPE=CHECKBOX NAME="check4" VALUE="" STYLE=" font-family: 'Arial', sans-serif; font-size: 12pt">Plug 4 </P> <P><INPUT TYPE="submit" NAME="Submit" VALUE="send" STYLE="width: 4.74cm; height: 0.77cm; font-family: 'Arial', sans-serif; font-size: 12pt"></P> </form> </body> </html>

Parameterübergaben Querystring: check1=&check2=&Submit=send GET POST char* query query = getenv("QUERY_STRING"); char query[128]; gets(query); Querystring: check1=&check2=&Submit=send & trennt die Controlls = Wert des Controlls, falls sinnvoll Mit Funktionen aus string.h kann der Querystring untersucht werden Mit char* GetPost=getenv("REQUEST_METHOD"); kann man Get bzw. POST ermitteln if(strstr(Param,"check1")) …

Environment #include <stdio.h> #include <ctype.h> void main(int argc, char*argv[],char*env[]) { char **pEnv=env; puts("Content-Type: text/html\n"); puts("<html><head><title>CGI-Script CGI-Environment</title>"); puts("</head><body><h2><hr>\n"); puts("<pre>\n"); while(*pEnv) puts(*pEnv);pEnv++; } puts("</body></html>"); //http://www.htw-dresden.de/~beck/cgi-bin/env.cgi?P1:Max,P2:Moritz

TZ=NFT-1DFT,M3.5.0/02:00:00,M10.5.0/03:00:00 DOCUMENT_ROOT=/u/web/doc HTTP_ACCEPT=image/png, image/*, */* HTTP_ACCEPT_ENCODING=gzip HTTP_HOST=www.htw-dresden.de HTTP_USER_AGENT=Mozilla/3.0 (compatible; StarOffice/5.2;Linux) PATH=/usr/bin:/etc:/usr/sbin:/usr/ucb:/usr/bin/X11:/sbin REMOTE_ADDR=212.185.244.91 REMOTE_HOST=pd4b9f45b.dip.t-dialin.net REMOTE_PORT=61197 SCRIPT_FILENAME=/home/rex/fi1/beck/public_html/cgi-bin/env.cgi SERVER_ADDR=141.56.15.3 SERVER_ADMIN=schreiber@htw-dresden.de SERVER_NAME=www.htw-dresden.de SERVER_PORT=80 SERVER_SIGNATURE=Apache/1.3.9 Server atwww.htw-dresden.de Port 80 SERVER_SOFTWARE=Apache/1.3.9 (Unix) GATEWAY_INTERFACE=CGI/1.1 SERVER_PROTOCOL=HTTP/1.0 REQUEST_METHOD=GET QUERY_STRING=P1:Max,P2:Moritz REQUEST_URI=/~beck/cgi-bin/env.cgi SCRIPT_NAME=/~beck/cgi-bin/env.cgi

Ausgabe von html Start mit Ausgabe von html-Text aus html-Datei printf("Content-Type: text/html"); printf("\n\n") ; Start mit Ausgabe von html-Text aus html-Datei F=fopen("/var/www/demo.html","rt"); while (fgets(buf,128,F)) { . . . puts(buf); } fclose(F); Hier variable Inhalte einpflegen und html-Text programmtechnisch erzeugen

Dynamisch content einbauen while (fgets(buf,128,F)) { if (strstr(buf,"check1")) p=strstr(buf,"VALUE="); if(strstr(Param,"check1")) cbstat|= 1; strcpy(p+strlen("VALUE=\"\""),"CHECKED"); } else cbstat&=~1; strcpy(p+strlen("VALUE=\"\"")," ");} . . . puts(buf); html-Zeile mit Checkbox check1 gefunden War check1 angeclickt? Status berechnen Status berechnen Häckchen No Häckchen

Licht ein-/ausschalten for (i=0;i<2;i++) { if (cbstat&(1<<i)) sprintf(command,"/usr/local/bin/send 11011 %d 1",i+1); else sprintf(command,"/usr/local/bin/send 11011 %d 0",i+1); system(command); }