PDF 3 - AG CGVR Uni

Werbung
Vorlesung
Werkzeuge der Informatik
Grundlagen und Werkzeuge des WWW (Teil 3)
Jörg P. Müller
Inhalt
• Entwicklung von Internet und WWW
• WWW-Architektur und Protokolle
– Web Ressourcen (oder: Was ist eine URL)
– Basisprotokoll des Internet: TCP/IP
– WWW-Architektur (Client-Server)
– Das HTTP-Protokoll
HTTP Protokoll
• Darstellung von WWW-Inhalten
– Das WWW-Dokumentenmodell: HTML
– Cascading Style Sheets (CSS)
• Dynamische Erzeugung von Webseiten
– Prinzipien
– Die Skriptsprache PHP
Wirtschaftsinformatik
© Prof. Dr. Jörg P. Müller, 2009
2
Dynamische Webinhalte
• Bisher haben wir HTML-Seiten als statisch (d.h. vorab
erzeugt) kennen gelernt
• Für viele Webanwendungen kann die Antwort auf eine
Anfrage aber erst zum Zeitpunkt der Anfrage ermittelt
werden
– Google-Suchanfrage:
g
g
• Menge der indizierten Webinhalte ändert sich laufend
– Amazon-Produktsuche:
• Momentane Inhalte des Produktkatalogs
• Personalisierung bzgl. aktuellem Nutzer
• Wie die Beispiele zeigen, gilt dies insbesondere für alle
datenbankbasierten Anwendungen
Wirtschaftsinformatik
© Prof. Dr. Jörg P. Müller, 2009
3
Skriptsprachen
• Werden hauptsächlich dazu verwendet, die Inhalte von
Webseiten interaktiv (dynamisch) zu gestalten
• d.h. Elemente der Website werden während der Anzeige
dynamisch verändert.
verändert
• Diese Veränderung kann duch das Einwirken des Nutzers
oder automatisch geschehen.
• Die gebräuchlichsten Sciptsprachen sind JavaScript,
p VBScript,
p PHP, CGI und Perl.
JScript,
• HTML-Dateien bei denen einzelne Elemente während der
Anzeige dynamisch ihren Inhalt ändern, werden auch als
d
dynamisches
i h HTML bezeichnet.
b
i h
Wirtschaftsinformatik
© Prof. Dr. Jörg P. Müller, 2009
4
Eigenschaften von Skriptsprachen
• Ausführung durch Interpreter
• Typfreiheit bzw. schwache Typisierung
• Oft weniger komplexe Datenstrukturen
• Oft Einbettung von Betriebssystemkommandos
• Komfortable Operationen mit Strings
• Einbinden externer bzw. fremder Programme, z.B.
– Dateioperationen
– Versenden von Emails
– Datenbankanfragen
Wirtschaftsinformatik
© Prof. Dr. Jörg P. Müller, 2009
5
Serverseitige vs. clientseitige Skriptsprachen
• Clientseitig:
– Das Skriptprogramm ist in das vom Server gelieferte HTMLDokument eingebettet
– Die Ausführung erfolgt im Webbrowser
– Beispiel: Javascript (siehe Teil 2), Visual Basic Skript
– Gut g
geeignet
g
z.B. zur lokalen Validierung
g von Nutzereingaben
g
• Serverseitig:
– Die Erstellung des vom Server an den Client gesendeten
HTML-Dokumentes erfolgt auf der Serverseite dynamisch
– Das Skriptprogramm liegt auf dem Server; Der Client sieht nur
das resultierende HTML
HTML-Dokument
Dokument
– Beispiel: PHP, Perl, Java Server Pages, beliebige ausführbare
Programme (z.B. Shell-Skripte, Java Servlets)
– Gut geeignet für die Erstellung von Seiten auf der Basis von
Information aus Datenbanken
Wirtschaftsinformatik
© Prof. Dr. Jörg P. Müller, 2009
6
Die Skriptsprache PHP
• Steht für: PHP Hypertext Preprocessing
• Modul bzw. Programm, das auf den Webserver installiert ist
• Präprozessor: Verarbeitet PHP-Befehle (sogenannte PHPSkripte) in einer Datei, bevor die Datei vom Web Server an
den Client geschickt wird
Web Server
Client
PHP
Server-Modul
(z.B. Apache)
HTTP
Web
Browser
DB-Server
(z.B. SQLite)
• PHP
PHP-Skripte
Sk i t erstellt
t llt man am besten
b t mit
it einem
i
Text-Editor
T t Edit
(z.B. Emacs, vi, Ultraedit, PHPEdit, Bluefish)
Wirtschaftsinformatik
© Prof. Dr. Jörg P. Müller, 2009
7
Verwendung von PHP-Skripten
• Typischerweise: Verarbeitung von Formulardaten
• Ablauf der Kommunikation zwischen Client und Server:
Server
form html
form.html
1b
1a
Apache
5.
processForm.php
7.
6.
PHP
1.
Anfrage: form.html
Client
2. Formular
anzeigen
1c. Ergebnis an Client zurück
4. Formulardaten an Server
schicken
sc
c e ((Anfrage
age a
an
processForm.php)
3. Formular
ausfüllen
und abschicken
9. Ergebnisseite an Client zurück
8.
Datenbank
Wirtschaftsinformatik
© Prof. Dr. Jörg P. Müller, 2009
5. Webserver lädt php-Datei
6. Webserver startet php-Interpreter
7. php-Interpreter
php Interpreter führt php-Datei
php Datei aus
8. Dabei ggf. Datenbankanfragen
8
Ein erstes PHP-Skript
<html>
<body>
• PHP-Skript
S
besteht aus
<?php
– Reiner Text (z.B. HTML)
/*
– Skriptbegrenzer
Auch mein erstes php-Skript
ist schon kommentiert
*/
/
echo 'Das kommt vom Server<hr>';
// hier endet Skriptcode
– PHP Skriptcode (Befehle)
• Im nebenstehenden
Beispiel kommt folgender
Code beim Client an:
?>
</body>
</html>
• Das Sprachkonstrukt echo
wird benutzt, um einen
Text auszugeben
Wirtschaftsinformatik
© Prof. Dr. Jörg P. Müller, 2009
<html>
<body>
Das kommt vom Server<hr>
</body>
/
</html>
9
Text- und HTML-Ausgabe mit PHP
• S
Sie können
ö
mit echo HTMLSteuerzeichen, wie z.B. ˈ>ˈ
oder ˈ<ˈ und somit auch
ganze HTML-Tags
ausgeben.
• Versuchen Sie:
<?php
echo
h ˈIch
ˈI h will
ill eine
i
Z
Zeile
il
ausgeben
ˈ;
echo ˈIch will noch eine
Zeile ausgebenˈ; ?>
• Wie gebe ich ein
Steuerzeichen in php ein? z.B.
echo 'Er
Er sagte 'Guten
Guten Tag'
Tag und
ging';
• Lösung: Escape-Sequenz mit
dem Zeichen '\'
echo 'Er sagte \'Guten Tag\'
und ging';
ging ;
• Sie können auch das Zeichen
'\' escapen
• Lösung:
– HTML-Tag
HTML Tag <br/>
<b /> einfügen
Wirtschaftsinformatik
© Prof. Dr. Jörg P. Müller, 2009
10
Double-quoted vs. single-quoted strings
• Single-quoted strings verwenden den einfachen
Apostroph
•
echo 'Er sagte \'Guten Tag\' und ging';
• Double-quoted
Double quoted strings verwenden Gänsefüßchen
•
echo "Er sagte \'Guten Tag\' und ging";
• In Double-quoted Strings sind zusätzliche Steuerzeichen
möglich, z.B.
– \n für Zeilenumbruch
– \t für Tabulatur (Einrückung)
• Beispiel
<?php
echo 'Er sagte \'Guten Tag\' \n und ging';
?>
Wirtschaftsinformatik
© Prof. Dr. Jörg P. Müller, 2009
11
Funktionen
• Aus einem PHP-Skript
S
können Teilprogramme
aufgerufen werden, die
einen Wert zurückgeben
Æ Funktionen
• Beispiel:
– Die Funktion phpinfo()
schreibt die aktuelle PHPKonfiguration.
– Ausprobieren!
<?php
• Allgemeine Form von
Funktionen
<?php
name_der_funktion(parameter1,
parameter2,...);
?>
• Funktionen selber definieren
function hello($name) {
$result='Hello, '.$name.'!';
return hello;
}
phpinfo();
?>
Wirtschaftsinformatik
© Prof. Dr. Jörg P. Müller, 2009
12
Variablen und Verkettungsoperator
• Variable:
V i bl
– Platzhalter, die im php-Skript
dynamisch mit Daten gefüllt
werden
d können
kö
– Beginnen mit '$', gefolgt von
einem Buchstaben oder '_',
danach beliebige Buchstaben,
Buchstaben
Zahlen, '_'
– Groß- u Kleinschreibung zählt
<?php
<?
h
$vorname1='max';
$nachname1='mustermann';
$name1=$vorname1 ' '.$nachname1;
$name1=$vorname1.
$nachname1;
$zaehler=1;
$vorname2='berta';
$nachname2='buerger';
g
$name2=$vorname2.' '.$nachname2;
$zaehler=$zaehler+1;
echo 'Es gibt '.$zaehler.'
$
Namen:
• Mit dem
d
Zuweisungsoperator
Z
i
t
'. $name1.' und '.$name2;
'=' kann einer Variable ein Wert
?>
zugewiesen werden
• Mit dem Verkettungsoperator
'.' kann man Strings und
Variablen verketten
Wirtschaftsinformatik
© Prof. Dr. Jörg P. Müller, 2009
13
Zahlen und Rechnen
• PHP unterstützt
ü die
Verwendung von Zahlen
• Dabei erkennt PHP zwei
Typen von Zahlen
– Ganze Zahlen ((Integer)
g )
– Fließkommazahlen(Float)
• PHP unterstützt
– Sechs
Grundrechenoperationen
– W
Weitere
it
mathematische
th
ti h
Funktionen, z.B.
<?php
? h
$a = 10;
$b = 6;
// die
echo
echo
echo
echo
vier Grundrechenarten
$a-$b;
$a+$b;
$ $
$a*$b;
$a/$b;
// Komplement
echo -$a;
// Modulo-Operation
echo $a%$b;
?>
sqrt(25); // 5
pow(2 3); // 8
pow(2,
Wirtschaftsinformatik
© Prof. Dr. Jörg P. Müller, 2009
14
Kontrollflussanweisungen
• Datentyp Boolean Æ Werte
true und false
• Verwendet zur Steuerung
des Kontrollflusses in
PHP-Skripten
• IF-Anweisung
<?php
if (ausdruck)
(
d
k) {
anweisung_1;
anweisung_2;
// ...
anweisung_n;
}
?>
Wirtschaftsinformatik
© Prof. Dr. Jörg P. Müller, 2009
• ausdruck
d
k kann
k
zusammengesetzter
Ausdruck sein, mit den
logischen Verknüpfungen
and, or, ! und xor
verbunden
• IF-ELSIF-ELSE
<?php
status=pruefe();
t t
f ()
if (status==1){
// führe aktion1 durch
} elsif (status
(status==2){
2){
// führe Aktion 3 durch
} else
// zeige Fehlermeldung
}
?>
15
Weitere Kontrollflussanweisungen
• While-Schleife
S
f
• For-Schleife
S
f
<?php
while (isAutoDreckig(
g
{
reinigen();
}
?>
<?php
/* g
gib die Zahlen von
0 bis 9 aus (bei 10
ist die Bedingung false)
*/
• Do-While-Schleife
for ($i=0; $i<10; $i++) {
echo $i."\n";
}
?>
<?php
p p
do {
verbinden();
$daten = datenAbfragen();
g
verbindungBeenden();
} while ($daten > 0);
?>
Wirtschaftsinformatik
© Prof. Dr. Jörg P. Müller, 2009
16
Arrays
• Verarbeitung von Listen und
Matrizen
$farben=array('rot','gruen','blau');
$farben
array( rot , gruen , blau );
• Arrayelemente können sein
– Zahlen,, Strings,
g , Arrays
y
Æ Mehrdimensionaly Arrays
• Löschen
ö
eines ArrayElements
unset($farben[2]);
• Testausgabe von Arrays:
var_dump($farben);
• Assoziative Arrays
$matrix=array(array(1,2),array(1,2));
– Index ist Stringwert
• Zugriff auf Arrayinhalte über
Index
$nutzer = array(
"Name" => "Karl",
"Alter" => 44,
"Beruf"
Beruf
=> "Student"
Student
);
echo "Ich bin
".$nutzer["Name"];
echo " und ".$nutzer["Beruf"];
echo
h $f
$farben[0];
b [0]
for ($i=0;i<sizeof($farben);i++){
echo farben($i).' '; }
Wirtschaftsinformatik
© Prof. Dr. Jörg P. Müller, 2009
17
Ein Beispiel: Funktionen und Arrays
<?php
function schreibeZeile($zeile){
echo '<tr>';
for ($i=0; $i<sizeof($zeile); $i++){
echo '<td>'.$zeile[$i].'</td>';
}
echo '</tr>';
}
$kundendaten=array(array('kundenid','nachname','vorname',
$kundendaten
array(array( kundenid , nachname , vorname , 'alter',
alter ,
'saldo'),
array('4711','meier','heinz',32, 10000),
array('0815', 'schulze', 'berta', 41, 50000),
array('1234',
123
'schmidt', 'karl', 38,
38 5000)
000
);
echo "<html><body>";
echo "<h1>Kundendaten</h1>";
<h1>Kundendaten</h1> ;
echo "<table border=\"1\">";
for ($j=0; $j<sizeof($kundendaten); $j++){
schreibeZeile($kundendaten[$j]);}
echo
h "</table></body></html>";
/ bl
/b d
/h l
?>
Wirtschaftsinformatik
© Prof. Dr. Jörg P. Müller, 2009
18
Verarbeiten von Nutzereingaben
• PHP erlaubt die einfache
f
Übermittlung von
Nutzereingabedaten mit
den HTTP-Methoden GET
und POST
• Hierzu stehen zwei globale
Array-Variable $_GET und
$ POST zur Verfügung
$_POST
• Bei GET werden Parameter
an die URL g
gehängt:
g
http://www.mysite.com/
registerUser.php?user=joerg&age=44
&married=true
&married
true
Wirtschaftsinformatik
© Prof. Dr. Jörg P. Müller, 2009
• Zugriff
ff auff die Werte im
Skript registerUser.php:
echo $_GET[
$ GET['user'];
user ];
echo $_GET['age'];
echo $_GET['married']
• Alle Werte in $GET sind
Strings oder Arrays
var_dump($_GET['age']);
// Ausgabe: String "44"
var_dump($_GET['married']);
// Ausgabe: String "false"
• Testen, ob bestimmte
Werte gesetzt sind
if (! isset($_GET[
isset($ GET['user'])
user ])
echo 'user not specified';
19
Beispiel: Verarbeitung von Formularen
Eingabeformular in HTML
<html>
<HEAD><TITLE>Nutzer registrieren</TITLE></HEAD>
g
<BODY>
<form method="post" action="http://winf.in.tuclausthal.de/jpm/php/registeruser.php">
<fieldset>
<legend>Registrieren
l
d
i
i
Sie
i sich</legend>
i h /l
d
<label>Nutzername:
<input name="user" type="text" size="10"></label>
<label>Alter:
<i
<input
t name="age"
"
" t
type="text"
"t t" size="3"
i
"3" maxlength="3"></label>
l
th "3"></l b l>
<label>Verheiratet:
<fieldset>
<label><input type="radio" name="married" value="true"
/>Ja</label>
<label><input type="radio" name="married" value="false"/>
Nein</label>
</fieldset>
</label>
<input type="submit" value="Absenden">
<input type="reset" value="Abbrechen">
</fieldset>
</form>
</body>
</html>
Wirtschaftsinformatik
© Prof. Dr. Jörg P. Müller, 2009
20
Beispiel: Verarbeitung von Formularen
PHP-Skript
PHP
Skript zur Formularbearbeitung
<HTML>
<BODY>
<H1> Ihre Registrierung </H1>
/
<?php
// pruefe Parameter
if (!i
(!isset($_POST['user'],
t($ POST['
'] $
$_POST['age']))
POST['
'])) {
die('Benutzen sie nur Formulare von der Homepage.');}
$user=$_POST['user'];
$age=$ POST['age'];
$age=$_POST['age'];
if ($_POST['married']=="true"){
$married="Ja";
}else{
$married="Kann ja noch werden";}
echo "<h3> Herzlich Willkommen!</h3>";
echo "<b>Ihr
<b>Ihr Nutzername:</b> ".$user."<br/>";
.$user. <br/> ;
echo "<b>Ihr Alter:</b> ".$age."<br/>";
echo "<b>Verheiratet?:</b> ".$married."<br/>";
?>
</BODY>
</HTML>
Wirtschaftsinformatik
© Prof. Dr. Jörg P. Müller, 2009
21
Datenbankanbindung
• Was tun mit den Formulardaten, die im vorherigen Beispiel
von unserem PHP-Skript eingelesen wurden?
– Auf dem Bildschirm ausgeben? Ok, aber was dann?
– In einer Datei speichern? Ok,
Ok aber Probleme zz.B.
B beim
gleichzeitigen Zugriff durch parallele Aufrufe …
– In einer Datenbank !!!
• Im Folgenden erhalten Sie eine sehr eingeschränkte
Einführung in relationale Datenbanksysteme
– Darstellung von Datensätzen in Tabellen (hier: nur eine
Tabelle)
– Anfrage an eine Tabelle mit der Anfragesprache SQL
– Einbindung in PHP
• Mehr dazu in der Vorlesung
g "Datenbanksysteme"
y
Wirtschaftsinformatik
© Prof. Dr. Jörg P. Müller, 2009
22
Relationale Datenbanken
• In sogenannten Relationalen Datenbanksystemen werden
Daten in Tabellen abgelegt
• Ein zusammengehöriger Datensatz wird dabei in eine Zeile
einer Tabelle abgelegt
• Spalten einer Tabelle enthalten Elemente vom gleichen
Typ und haben einen Namen ((= Attributname)
• Typen, z.B. int, varchar(n)
Nutzer
• Beispiel: Tabelle "Nutzer"
id
name
alter
verheiratet
1
K l
Karl
44
1
2
Sabine
28
0
3
Heinz
34
0
4
Eva
39
1
Wirtschaftsinformatik
© Prof. Dr. Jörg P. Müller, 2009
23
Datenbankabfragen mit SQL
• SQL-Structured Query Language
– Standard-Abfragesprache für relationale Datenbanksysteme
– Bietet Sprachkonstrukte zum
• Erzeugen
E
von Datenbanken
D t b k
• Stellen von Anfragen an Datenbanken
• Speichern eines neuen Datensatzes
• Ändern oder Löschen von Datensätzen
• Anfragen:
– SELECT <attribute>
< tt ib t > //welche
// l h Attribute
Att ib t (Spalten)
(S lt ) auswählen?
ähl ?
FROM <tabelle>
// von welcher Tabelle?
WHERE <bedingung> // zusätzliche Filterbedingungen?
• SELECT-Anfragen liefert grundsätzlich eine Tabelle zurück
(d.h. eine Menge von Datensätzen)
Wirtschaftsinformatik
© Prof. Dr. Jörg P. Müller, 2009
24
SQL-SELECT: Beispiele
S
SELECT
C * FROM
O Nutzer
Liefert alle Einträge der
Tabelle mit allen Attributen
SELECT
S
C name, alter
FROM Nutzer
WHERE verheiratet > 0
Liefert die Attribute name
und alter der Datensätze,
deren Wert für das
Attribut verheiratet größer
als 0 ist
id
name
alter verheiratet
1
Karl
44
1
2
Sabine 28
0
name
alter
3
Heinz
34
0
Karl
44
4
Eva
39
1
Eva
39
Wirtschaftsinformatik
© Prof. Dr. Jörg P. Müller, 2009
25
Einfügen eines neuen Datensatzes
• Zum Einfügen
fü
von
Datensätzen gibt es das
SQL-Sprachkonstrukt
SQL
Sprachkonstrukt
• Beispiel:
INSERT INTO
Nutzer (name,
(name alter,
alter verheiratet)
VALUES ("Olivier", 27, 0);
INSERT INTO
<tabelle>(<attribute>)
VALUES (<werte>);
Wirtschaftsinformatik
© Prof. Dr. Jörg P. Müller, 2009
• Für das Feld id muss kein Wert
eingegeben werden
id
name
alter
verheiratet
1
Karl
44
1
2
Sabine
28
0
3
Heinz
34
0
4
Eva
39
1
5
Olivier
27
0
26
Datenbankabfragen mit PHP
• SQ
SQL-Anfragen
f
und -Befehle
f
• Es gibt unterschiedliche
werden nicht vom PHPDatenbanken (z.B. mySQL,
Prozessor , sondern von
SQLite)
einer Datenbank ausgeführt • Es gibt unterschiedliche
Programmerweiterungen,
• PHP muss deshalb:
die die Kommunikation
– Sich mit der Datenbank
zwischen PHP und der
verbinden
Datenbank ermöglichen
– Die
Di Anfrage
A f
an die
di Datenbank
D t b k
schicken
– Das Ergebnis (ein
sogenanntes "Result Set")
entgegennehmen
• Näheres dazu erfahren Sie
in der Übung
g / mit den
Übungsmaterialien
– In einer Variable
weiterbearbeiten
Wirtschaftsinformatik
© Prof. Dr. Jörg P. Müller, 2009
27
Herunterladen