Vorlesung VIII. Common Gateway Interface(CGI) PHP

28
1 Web-Programmierung (WPR) Vorlesung VIII. Common Gateway Interface(CGI) & PHP mailto:[email protected]

Transcript of Vorlesung VIII. Common Gateway Interface(CGI) PHP

Page 1: Vorlesung VIII. Common Gateway Interface(CGI) PHP

1

Web-Programmierung (WPR)

Vorlesung VIII.

Common Gateway Interface(CGI)&

PHP

mailto:[email protected]

Page 2: Vorlesung VIII. Common Gateway Interface(CGI) PHP

2

12 Common Gateway Interface

● Von allen Webservern unterstützt● Anzubindende Programme

=> Gateway zu bestehenden Programmen

Web-Client Web-Server CGI-Script DBMS

HTTP CGI

Ausführung in separatem Prozess

Page 3: Vorlesung VIII. Common Gateway Interface(CGI) PHP

3

12 Common Gateway Interface

Umgebung

Web-Server CGI-Script

Umgebung initialisieren

stdin-Verknüpfung

stdout-Verknüpfung

Page 4: Vorlesung VIII. Common Gateway Interface(CGI) PHP

4

12 Common Gateway Interface

Sprache BeschreibungC/C++

Interpreter, UNIX-UmgebungInterpreter, UNIX-Umgebung

PHPWindows-Umgebung

Compiler, plattformabhängigsh,ksh,cshtcl

Interpreter, plattformabhängigVisual Basic

● Bereitstellung (typischerweise)cgi-bin

http://hostname/cgi-bin/programmname

Page 5: Vorlesung VIII. Common Gateway Interface(CGI) PHP

5

12.1 Informationsbeschaffung

Umgebungsvariable BeschreibungHTTP_USER_AGENT Browser des Client...REQUEST_METHOD HTTP-Methode (GET oder POST)QUERY_STRING URL codierte Benutzereingaben

Methode BeschreibungGET QUERY_STRING enthält FormularinformationenPOST Daten können von STDIN gelesen werden. Die

Länge wird aus der Umgebungsvariablen CONTENT_LENGHT gelesen.

● Übertragung von Formular-Feldern

Page 6: Vorlesung VIII. Common Gateway Interface(CGI) PHP

6

12.4 Programmiermodell

● CG'I ist unabhängig von der Programmiersprache

● Es gibt kein CGI API● Programmiermodell

=Umgebung durch Web-Server Standardeingabe stdin Standardausgabe stdout Umgebungsvariablen

● CGI-Programmierung ist HTTP-Programmierung im Raw-Mode

Page 7: Vorlesung VIII. Common Gateway Interface(CGI) PHP

7

12.6 Fazit

● Anzahl gleichzeitiger Request ist eingeschränkt (Perl/CGI)

● Für größere Web-Lösungen Nicht genügend performant Nicht genügend skalierbar

● Größter Vorteil Perl/CGI CGI wird von jedem Web-Server angeboten Interpreter-Impl. existiert für relevante

Betriebssysteme Provider Angebot (Perl/CGI) ist groß Lizenzkostenfreie Web-Applikationen realisierbar

Page 8: Vorlesung VIII. Common Gateway Interface(CGI) PHP

8

13 PHP

● Serverseitige Web-Plattform

● Skriptsprache mit Perl-ähnlicher Syntax

● Prozedurale Sprache + objektor. Extensions

● Umfangreiche Bibliothek vordef. Funktionen

● Umfassende Datenbankunterstützung

● Open Source

Page 9: Vorlesung VIII. Common Gateway Interface(CGI) PHP

9

13 PHP

Web-Client Web-Server php.exePHP-script DBMS

HTTP CGI

Ausführung in separatem Prozess

● PHP Laufzeitalternativen PHP als CGI-Programm

PHP als Server-Modul

Web-Client

Web-ServerPHP-Modul

PHP-script DBMS

HTTP

Page 10: Vorlesung VIII. Common Gateway Interface(CGI) PHP

10

13.1 Grundlagen

● PHP-Merkmale Einfachheit Vertrautheit Effizienz Portablilität Beschränkung auf das Notwendige

● Implementierung Keine separaten Programmdateiein in PHP Nur dynamische Teile in PHP implementiert<?php ...... ?>

Page 11: Vorlesung VIII. Common Gateway Interface(CGI) PHP

11

13.1 Grundlagen

● Dateiname Endung: .php Definition erfolgt beim WebServer

z.B. Apache http-Server (httpd.conf)AddType application/x-httpd-php .php

● Kommentare Einzeilig: // oder # Mehrzeilig: /* ......*/

Page 12: Vorlesung VIII. Common Gateway Interface(CGI) PHP

12

13.1 Grundlagen

● Tagging● short tagging<% echo „Brave new PHP World; %/>● script tagging<script language=“php“> echo „Brave new PHP World;</script>● Ausgabeanweisung (siehe JSP)<%= „Brave new PHP World“ %/>

● Seitenabruf● PHP-Dateien werden interpretiert● Ablage wie HTML-Seiten

Page 13: Vorlesung VIII. Common Gateway Interface(CGI) PHP

13

13.1 Grundlagen

● Konfiguration Zentrale Konfigurationsdatei: php.ini

Page 14: Vorlesung VIII. Common Gateway Interface(CGI) PHP

14

13.2 Sprachüberblick

● Datentypen integer, double, string, boolean array, object

● Typzuweisung Typzuweisung bei Wertzuweisung Expliziter Typecast ist möglich (Cast Operator)

Page 15: Vorlesung VIII. Common Gateway Interface(CGI) PHP

15

13.2 Sprachüberblick

● Operatoren Arithmetische Operatoren (+,-,*,/,%) Zuweisungsoperatoren (=,+=,-=,..) Vergleichsoperatoren (>,>=,<=,==,!=) Stringkonkatentation (.) Logische Operatoren (&&, ||, xor, ...) UnäreOperatoren (+,-,++,--,!,(typ) Ternäre Bedingsoperator (?:)

Page 16: Vorlesung VIII. Common Gateway Interface(CGI) PHP

16

13.2 Sprachüberblick

● Variablen Bezeichner beginnen mit $

Stringliterale mit „“, => Variablensubstitution wird durchgeführt

Stringliterale mit ' (Hochkomma)=> keine Substitution

Page 17: Vorlesung VIII. Common Gateway Interface(CGI) PHP

17

13.2 Sprachüberblick

● Arrays Gewöhnliche Arrays

$listCommonArray=array(13,4,5);// Anhängen eines Elements

$listCommonArray[]=18; echo „drittes Element: $listCommonArray[2]\n“;

● Assoziativ Arrays$listAssociativeArray=(

13=>“eins“,19=>“58“);

echo „zweites Element: $listAssociate[19] der Liste“;

Page 18: Vorlesung VIII. Common Gateway Interface(CGI) PHP

18

13.2 Sprachüberblick

● Kontrollstrukturen if(boolscher Ausdruck){

...}elseif (boolscher Ausdruck){ ...}else{

...}

switch(Skalaranweisung){case literal: ... ;default: ... ;}

Page 19: Vorlesung VIII. Common Gateway Interface(CGI) PHP

19

13.2 Sprachüberblick

● Kontrollstrukturen (Schleifen) while(boolscher Ausdruck){

Anweisungen..}

do{Anweisungen...

}while(boolscher Ausdruck); for(Anweisung1;boolscher Ausdruck;Anweisung3){

Anweisungen...}

foreach(array as arrayelement){... }

Page 20: Vorlesung VIII. Common Gateway Interface(CGI) PHP

20

13.2 Sprachüberblick

● FunktionenSchlüsselwort function

function quadrat($parameter){$result=$parameter * $ parameter;return $result;}

● Globale Variablen Deklarationglobal $g_my_reference;

Page 21: Vorlesung VIII. Common Gateway Interface(CGI) PHP

21

13.2 Sprachüberblick

● Klassen (Funktionen und Attribute)● <?phpclass Cart {

var $items; // Items in our shopping cart// Add $num articles of $artnr to the cartfunction add_item($artnr, $num) {

$this->items[$artnr] += $num;}// Take $num articles of $artnr out of the cartfunction remove_item($artnr, $num) {

if ($this->items[$artnr] > $num) {$this->items[$artnr] -= $num;return true;

} else {return false;

}}

}?>

Page 22: Vorlesung VIII. Common Gateway Interface(CGI) PHP

22

13.2 Sprachüberblick

● Reguläre Ausdrücke● PHP stellt dafür Funktionen zur Verfügung

z.B.:

Funktion BeschreibungTest einer ZeichenfolgeTest einer ZeichenfolgeModifikation einer Zeichenfolge

preg_match()preg_match_all()preg_replace()preg_split() Aufteilung einer Zeichenfolge in Token

Page 23: Vorlesung VIII. Common Gateway Interface(CGI) PHP

23

13.3 Informationsbeschaffung

● PHP Laufzeitumgebung => globale Assoziative Arrays

Inhalt$_GET$_POST$_SERVER Server-Infos + selektive HTTP-Header-Infos$_ENV Zugriff auf Umgebungsvariablen$_COOKIE Mit Cookie übertragenes Array$_SESSION

VariablennameFormulardaten eines GET-RequestFormulardaten eines POST-Request

Sessionweit verfügbare Daten

Page 24: Vorlesung VIII. Common Gateway Interface(CGI) PHP

24

13.4 Responsegenerierung

● Standardfunktion header()<? if(!header_sent()){

header(„Content-Type: text/plain“); }?>Dies ist ein geöhnlicher Text

Page 25: Vorlesung VIII. Common Gateway Interface(CGI) PHP

25

13.4 Response-Generierung

● Server-Redirection<?

if($_GET['user']==““|| $_GET['password'==““]) $response=“error.html“; else $response=“confirmation.html“; if(!header_sent(){ header(„Location: $response“); exit; }?>

Page 26: Vorlesung VIII. Common Gateway Interface(CGI) PHP

26

13.5 Programmiermodell

● Dokumentenzentrierte Web-Plattforms.a. CGI = Programmorientiert

● PHP-Dokumente Primär HTML-Dokumente Incl. Programmcode

● PHP-Code wird interpretiert

● Einheitliches API für einfache Anwendung

Page 27: Vorlesung VIII. Common Gateway Interface(CGI) PHP

27

13.9 Modularisierung

● Modularisierung von Programmcodeund HTML-Dokumenten include(„header.html“); include_once(„util.php“);

lib.php config.php template.phputil.php

shop.php

spezifische Business-Logikund Konfiguration

shop/content-wine.php

Response

Request

Page 28: Vorlesung VIII. Common Gateway Interface(CGI) PHP

28

13.10 Fazit

● PHP ist einfach und leicht erlernbar

● Sprachumfang klein (da Web-Zentriert)

● Zuverlässige Integration in Apache http-Server

● Umfangreiche Bibliothek Schnittstellen für XML, Datenbanken,...