8

Click here to load reader

Webdatenbanken (PHP und MySQL) - mttcs.org · Webdatenbanken (PHP und MySQL) Seminar 1: Installation und Einführung Für diese Lehrveranstaltung wird das Installationspaket XAMPP

  • Upload
    buikhue

  • View
    213

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Webdatenbanken (PHP und MySQL) - mttcs.org · Webdatenbanken (PHP und MySQL) Seminar 1: Installation und Einführung Für diese Lehrveranstaltung wird das Installationspaket XAMPP

Webdatenbanken (PHP und MySQL)

Seminar 1: Installation und Einführung Für diese Lehrveranstaltung wird das Installationspaket XAMPP verwendet. Das Installationspaket kann man kostenlos unter http://www.apachefriends.org/de/xampp.html. herunterladen. Auf der Webseite wird auch die Installation für verschiedene Betriebssysteme erklärt. Nach erfolgreicher Installation wird das System gestartet, indem man die xampp_start.exeim Verzeichnis xampp ausführt. Apache- und MySQL-Server laufen jetzt im Hintergrund. PHP ist ebenfalls installiert, muss aber nicht ständig als Prozess im Hintergrund laufen. Es wird ja nur benötigt, wenn PHP-Skripte abgearbeitet werden müssen. Zur Arbeit mit Datenbanken verwenden wir also einen Webserver (Apache), einen Datenbankserver (MySQL), einen Webbrowser (relativ beliebig) und eine Skriptsprache (PHP), um die gewünschten Funktionalitäten zu programmieren. Wer einen anderen Webserver verwenden will, kann das tun, muss sich dann aber selbst um die Anbindung an PHP und MySQL kümmern. Man kann die Installation testen, indem man einen Browser öffnet und als Adresse localhost eingibt. Nun sollte die lokale Startseite von XAMPP geöffnet werden. Die Dateien dazu liegen im Verzeichnis xampp\htdocs. Dieses Verzeichnis ist in der Konfigurationsdatei von Apache voreingestellt. Dort werden später auch alle selbst erstellten Dateien abgelegt werden, wobei man beliebige Unterverzeichnisse erstellen kann. Auf der geöffneten Seite kann man sich mit Hilfe der Links am linken Rand über das System informieren. Es ist sehr zu empfehlen, gleich nach der Installation den Sicherheitscheck zu machen (entsprechenden Link anklicken). Dabei sieht man nicht nur, was noch unsicher ist, sondern man erfährt auch gleich, was zu tun ist, um den Rechner sicher zu machen. Folgen Sie einfach den Anweisungen. Durch Klick auf phpinfo() kann man schließlich testen, ob die Anbindung an PHP funktioniert. Auf dem Bildschirm werden in Tabellenform alle aktuellen Konfigurationseinstellungen angezeigt, das ist der Inhalt der Datei php.ini.

Überblick Das installierte System funktioniert folgendermaßen: 1. Ein Nutzer ruft in seinem Web-Browser über die URL eine Webseite auf. Ist diese Datei ein

PHP-Skript oder enthält sie PHP, wird diese Datei vom Server an PHP weitergeleitet. Damit der Server das entscheiden kann, sind in seiner Konfigurationsdatei (httpd-xampp.conf) alle Datei-Endungen eingetragen, die Apache an PHP weiterschicken soll.

2. PHP verarbeitet das Skript. Einfache HTML-Anweisungen werden unverändert gelassen, PHP-Befehle werden ausgeführt. Das heißt, es wird HTML-Quelltext daraus erzeugt. Sind PHP-Befehle enthalten, die auf eine Datenbank zugreifen, wird eine Verbindung zur angegebenen Datenbank im laufenden MySQL hergestellt und Anfragen weitergeleitet.

3. Der MySQL-Server empfängt die Anfrage, führt sie aus und gibt das Ergebnis an PHP zurück. 4. PHP fährt mit der Bearbeitung des Skripts fort bis zum Ende. Eine HTML-Datei ist entstanden. 5. Der Webserver schickt diese HTML-Datei zurück zum Browser des Nutzers.

Page 2: Webdatenbanken (PHP und MySQL) - mttcs.org · Webdatenbanken (PHP und MySQL) Seminar 1: Installation und Einführung Für diese Lehrveranstaltung wird das Installationspaket XAMPP

Abb.1 Zusammenspiel der Komponenten

Im Kurs befinden sich alle Komponenten auf dem selben Rechner, in einem laufenden System ist das in der Regel nicht mehr der Fall, zumindest Client und Server sind getrennt. Für den beschriebenen Ablauf spielt das aber keine Rolle. Im Punkt 1 steht, dass der Server eine Datei an PHP weiterleitet. Das ist sehr wichtig, da man beachten muss, dass man jede Webseite immer über den Server aufrufen muss, da nur der Server PHP aktiviert. Der Aufruf über den Server bedeutet, dass die Dateien htdocs-Verzeichnis abgelegt werden müssen. Es können beliebig viele Unterverzeichnisse angelegt werden. In der Konfigurationsdatei vom Apache (httpd.conf) kann man bei Bedarf auch ein anderes Verzeichnis als Basisverzeichnis eintragen. Dazu muss man die Zeile raussuchen, in der die DocumentRoot eingerichtet wird DocumentRoot "/xampp/htdocs" und sie entsprechend verändern. Im hier eingestellten Verzeichnis befindet sich in der Regel eine Datei "index.html", die aufgerufen wird, wenn der Server angesprochen wird. Den Server kann man entweder über seinen Namen (localhost) oder seine IP-Adresse (127.0.0.1)aufrufen. Soll eine andere als die Startseite aufgerufen werden, fügt man den Dateinamen, evtl. mit Pfadangaben, an den Servernamen an. Wenn also beispielsweise im htdocs-Verzeichnis ein Unterverzeichnis "Kurs" angelegt wurde und in diesem Unterverzeichnis eine Datei "test.php" gespeichert ist, muss im Adressfeld des Browsers

Page 3: Webdatenbanken (PHP und MySQL) - mttcs.org · Webdatenbanken (PHP und MySQL) Seminar 1: Installation und Einführung Für diese Lehrveranstaltung wird das Installationspaket XAMPP

http://localhost/Kurs/test.php angegeben werden. Ob man dabei den Servernamen oder die IP-Adresse verwendet ist egal. In der httpd.conf ist der Servername festgelegt. ServerName localhost:80 Wenn man den Sicherheitscheck wie oben beschrieben gemacht hat, wurde als Schutz für das htdocs-Verzeichnis angeboten, ein Passwort anzugeben. Man kann den Apache-Server aber auch noch auf andere Weise gegen Zugriffe von außen schützen. Um einen Zugriff auf den Server nur vom eigenen Rechner aus zu gestatten, muss man den entsprechenden Eintrag in der Datei httpd.conf ändern. Standardmäßig findet man folgende Zeilen: Order allow,deny Allow from all Die erste Zeile gibt die Reihenfolge der Prioritäten an, deny hat eine höhere Priorität als allow, und mit der zweiten Zeile wird einfach allen Rechnern der Zugriff gestattet. Durch Änderung der zweiten Zeile in deny from all verbietet man den Zugriff von allen Rechnern. Möchte man nun bestimmten Rechnern den Zugriff gestatten, muss man die Reihenfolge der Prioritäten ändern und in der zweiten Zeile allow from ...., deny from all angeben. Vergisst man die Änderung der Prioritäten, würde man zwar zuerst einem bestimmten Rechner den Zugriff gestatten, mit deny from all aber allen Rechnern den Zugriff verbieten und wegen der höheren Priorität von deny auch den zuerst angegebenen Rechner mit ausschließen. Hinweise zur Konfiguration von Apache gibt es u.a. auch unter http://www.goldmann.de/apache-konfigurieren\_tipp\_33.html . Das erste PHP-Skript Ein PHP-Skript wird mit einem Editor geschrieben und als Text abgespeichert. Man kann dazu einen einfachen Editor wie Notepad verwenden. Es gibt aber auch Freeware-Editoren, die das Schreiben von PHP-Skripten durch Syntaxhighlighting u.ä. unterstützen, z.B. HAPedit. Unter http://www.php-editors.com/review/ gibt es eine ganze Liste von Editoren.

Aufgabe 1 Laden Sie das erste Beispielskript auf Ihren Rechner und führen Sie es aus! Der Quelltext des Skriptes sieht folgendermaßen aus: <html> <head> <title>PHP Beispiel 1: Einfache Anweisungen</title> </head> <body> <h1>Beispiel 1: Einfache Anweisungen</h1> Hallo, <strong><?php echo $_SERVER['REMOTE_ADDR']; ?></strong><p>

Page 4: Webdatenbanken (PHP und MySQL) - mttcs.org · Webdatenbanken (PHP und MySQL) Seminar 1: Installation und Einführung Für diese Lehrveranstaltung wird das Installationspaket XAMPP

Der Browser ist <?php echo $_SERVER['HTTP_USER_AGENT']; ?> <br><br> Heute ist der <?php # Kommentar: Gib das Datum aus, dann je nach Monat noch eine Zeichenkette $tag = date('z') + 1; echo date('d. m. Y') . ", der " . $tag . ". Tag des Jahres. <p>\n"; $monat = date('m'); if ($monat == 1 || $monat == 2 || $monat == 12) echo "Es ist Winter."; else if ($monat > 2 && $monat < 6) echo "Es ist Frühlingszeit."; else if ($monat > 5 && $monat < 9) echo "Es ist Sommer."; else echo "Es ist Herbstzeit."; ?> <p> </body> </html> An diesem Beispiel erkennt man schon, dass PHP in eine HTML-Datei eingebettet werden kann. Man kann beliebig viele PHP-Bereiche in einer HTML-Datei haben. Zum Testen speichert man die Datei im htdocs-Verzeichnis. Dann öffnet man einen Browser und tippt in die Adresszeile http://localhost/test.php. Erscheint eine Fehlermeldung, kann das mehrere Ursachen haben. Entweder wurde die Datei nicht im richtigen Verzeichnis gespeichert, oder der Apache-Server läuft nicht. Schauen Sie sich jetzt den Seitenquelltext (über das Menü des Browsers) und in einem weiteren Fenster den Quelltext der Datei (z.B. in Notepad) an. Man stellt sofort fest, dass im Seitenquelltext der HTML-Quelltext der angezeigten Seite zu sehen ist, und nicht der Quelltext der .php-Datei. Das liegt daran, dass der Server an der Endung .php erkannt hat, dass die Seite von PHP bearbeitet werden muss und PHP macht nichts anderes, als die angegebenen PHP-Befehle auszuführen und HTML-Code zu erzeugen. Erst die dann entstandene HTML-Datei wird an den Browser geschickt. So kann also derjenige, der sich die Seite auf dem Rechner anzeigen lassen will, nicht den PHP-Quelltext sehen. Auch hätten die Browser ein Problem. PHP ist eine serverseitige Skriptsprache, d.h., PHP läuft auf dem Server und der Client hat nicht die Fähigkeit, mit PHP überhaupt etwas anzufangen. Deshalb muss das PHP-Skript auf dem Server browserverständliches HTML erzeugen.

Einführung PHP In diesem Seminar geht es darum, mit PHP über das Internet auf Datenbanken zuzugreifen. Ein ausführliches PHP-Handbuch auf deutsch findet man unter http://www.php.net/manual/de/intro-whatcando.php, das Skript enthält nur eine kurze Einführung. PHP-Anweisungen können an beliebiger Stelle in eine HTML-Datei geschrieben werden. Sie sind durch ein Anfangs- und ein End-Tag gekennzeichnet (z.B. <? ... ?>). Jede PHP-Anweisung wird mit einem Semikolon beendet. Leerzeichen oder Leerzeilen werden von PHP ignoriert, sie dienen nur dazu, den Quelltext für den Programmierer übersichtlicher und besser lesbar zu gestalten. Einzeilige

Page 5: Webdatenbanken (PHP und MySQL) - mttcs.org · Webdatenbanken (PHP und MySQL) Seminar 1: Installation und Einführung Für diese Lehrveranstaltung wird das Installationspaket XAMPP

Kommentare werden durch <b>//</b> oder <b>#</b> gekennzeichnet, mehrzeilige Kommentare mit einem <b>/*</b> am Anfang und <b>*/</b> am Ende. Alle Variablennamen in PHP beginnen mit einem Dollarzeichen, gefolgt von einem Buchstaben oder Unterstrich. Sie können beliebig lang sein und bestehen aus Buchstaben, Zahlen und Unterstrichen. PHP unterscheidet bei Variablennamen zwischen Groß- und Kleinschreibung! Variablen dürfen den gleichen Namen haben wie eine eingebaute Funktion, was allerdings irritierend ist und deswegen vermieden werden sollte. Eigene Funktionen dürfen nicht den selben Namen haben wie eingebaute Funktionen. Es gibt Variablen, die im HTML-Formular deklariert und dann in PHP weitergegeben werden und vom Nutzer direkt in PHP definierte Variablen. Selbstdefinierte Variablen brauchen nicht deklariert zu werden, sie werden genau dann erzeugt, wenn ihnen zum ersten Mal ein Wert zugewiesen wird (Initialisierung). Der Variablentyp richtet sich dann nach der Art der Daten, welche der Variable zugewiesen werden (was sich auch im Programm öfter ändern kann). Man kann auch vorgeben, welchen Typ eine Variable haben soll, dazu setzt man bei der Zuweisung eines Wertes an die Variable den Typ vor den Wert in Klammern $variable = (typ)wert Folgende Datentypen gibt es in PHP: • Integer speichert ganze Zahlen • Float speichert reelle Zahlen • Boolean speichert Wahrheitswerte • String speichert Zeichenketten • Array speichert mehrere Daten desselben Typs • Object speichert Instanzen von Klassen • Resource enthält eine Referenz auf eine externe Ressource • NULL Variable, die keinen Wert enthält Es ist in PHP möglich, einen Variablennamen zu verändern (variable Variablen). Das kann nützlich sein, wenn man z.B. in einer Schleife die Variablen eines Formulars auslesen möchte. Konstanten werden mit define definiert. Konstantenbezeichner beginnen mit einem Dollarzeichen. Für den Gültigkeitsbereich der Variablen gibt es 3 Möglichkeiten: • globale Variablen werden im Skript deklariert und sind im gesamten Skript gültig, aber nicht

in Funktionen • lokale Variablen werden in Funktionen benutzt und sind nur dort gültig • globale Variablen in Funktionen, auch in Funktionen können globale Variablen deklariert

werden, diese beziehen sich dann auf die globale Variable mit demselben Namen Eine Übersicht der Operatoren kann man sich unter der URL http://www.php.net/manual/de/language.operators.php im PHP-Handbuch ansehen, deshalb wird auf eine ausführliche Übersicht hier verzichtet. Für unsere Anwendungen ist der Operator zur Verkettung von Strings wichtig, ein ".“. Die arithmetischen Operatoren sind " +,-,*,/" und "%" für die Modulo-Division. Die Wertzuweisung erfolgt über "=". Sollte man versuchen, diese arithmetischen Operatoren auf Variablen anzuwenden, die nicht Integer oder Double sind, versucht PHP, diese Variablen umzuwandeln, und wenn das

Page 6: Webdatenbanken (PHP und MySQL) - mttcs.org · Webdatenbanken (PHP und MySQL) Seminar 1: Installation und Einführung Für diese Lehrveranstaltung wird das Installationspaket XAMPP

fehlschlägt, wird der Wert "0" angenommen und damit die Operation ausgeführt. Die Operatoren lassen sich auch kombinieren. So kann man z.B. statt $a = $a + 5; auch verkürzt schreiben $a +=5; Außerdem gibt es Operatoren, um Werte von Variablen um 1 zu erhöhen oder zu verringern. Statt $a = $a + 1; kann man auch schreiben ++$a; Kombiniert man diese Zuweisung noch mit anderen Anweisungen, kann man den Pre-Increment-Operator (in diesem Fall wird zuerst die Variable a um eins erhöht und dann ausgegeben) echo ++$a; oder den Post-Increment-Operator verwenden. echo $a++; Hier wird zuerst der augenblickliche Wert der Variable a ausgegeben und dann um 1 erhöht. Der Referenzoperator "&" kann gemeinsam mit dem Zuweisungsoperator „=“ benutzt werden. Wenn man schreibt $a = 5; $b = $a; $a = 7; dann wird eine Kopie des Wertes von a erzeugt und in b gespeichert. Die Zuweisung des Wertes "7" an a ändert nicht den Wert von b. Schreibt man jedoch $a = 5; $b = &$a; $a = 7; wird in b eine Referenz auf a gespeichert und die Zuweisung von "7" an a ändert auch den Wert, den wir erhalten, wenn wir auf b zugreifen. Für Verzweigungen gibt es folgende Konstrukte: IF(bedingung){ anweisungen; } ELSE { anweisungen; }

Page 7: Webdatenbanken (PHP und MySQL) - mttcs.org · Webdatenbanken (PHP und MySQL) Seminar 1: Installation und Einführung Für diese Lehrveranstaltung wird das Installationspaket XAMPP

Die geschweiften Klammern dienen zur Begrenzung eines Anweisungsblockes, falls mehrere Anweisungen ausgeführt werden sollen, bei nur einer Anweisung kann man sie auch weglassen. IF-Anweisungen können auch geschachtelt werden. Um mehr als 2 Alternativen angeben zu können, wird die ELSEIF-Anweisung benutzt. IF(bedingung1) anweisung; ELSEIF(bedingung2) Anweisung; ELSEIF(bedingung3) Anweisung; Es können beliebig viele ELSEIF-Anweisungen untereinander stehen. Nur die Anweisungen hinter der ersten Bedingung, die als "wahr" erkannt wird, werden ausgeführt. Blockanweisungen werden wieder in geschweifte Klammern eingeschlossen. Anstelle vieler ELSEIF-Anweisungen kann SWITCH benutzt werden. Die SWITCH-Anweisung vergleicht eine Variable (oder einen Ausdruck) mit verschiedenen Werten und führt bei Übereinstimmung die Anweisungen aus, die im Case-Zweig angegeben sind. Achtung: Wenn kein break; am Ende der Anweisungen steht, werden alle Anweisungen aller nachfolgenden Case-Zweige ebenfalls ausgeführt! SWITCH($variable) { CASE wert1 : anweisungen; break; CASE wert2 : anweisungen; break; DEFAULT : anweisungen; break; } Für Schleifen gibt es den abweisenden Zyklus: WHILE(bedingung) { anweisungen; } Die Bedingung wird vor der Abarbeitung jedes Zyklus getestet, die nachfolgenden Anweisungen werden nur ausgeführt, wenn die Bedingung erfüllt (wahr) ist. und den nicht abweisenden Zyklus: DO Anweisungen; WHILE(bedingung); Diese Schleife wird in jedem Fall mindestens einmal durchlaufen, da die Bedingung erst am Ende des Durchlaufes getestet wird. Diese Kontrollstrukturen beschreiben, welche Anweisungen unter bestimmten Bedingungen ausgeführt werden sollen. Manchmal ist

Page 8: Webdatenbanken (PHP und MySQL) - mttcs.org · Webdatenbanken (PHP und MySQL) Seminar 1: Installation und Einführung Für diese Lehrveranstaltung wird das Installationspaket XAMPP

es auch erforderlich, diese Strukturen vorzeitig zu verlassen. Wenn man die Abarbeitung in einer Schleife abbrechen und mit dem nächsten Schleifendurchlauf fortsetzen will, verwendet man continue;. Will man die gesamte Schleife abbrechen und mit der Anweisung weitermachen, die direkt nach der Schleife folgt, verwendet man break;. Um die Abarbeitung des gesamten PHP-Skriptes abzubrechen wird exit; verwendet. Bricht man die Abarbeitung auf diese Weise ab, sollte man mit einer ECHO-Anweisung vorher noch die abschließenden HTML-Tags in die Ausgabe schreiben, um die HTML-Datei ordnungsgemäß zu beenden. sowie die Zählschleife: FOR(ausdruck1; bedingung; ausdruck2) Ausdruck3; Ausdruck 1 wird genau einmal beim Start der Schleife ausgeführt, hier wird in der Regel der Anfangswert eines Zählers gesetzt. Die Bedingung wird vor jedem Durchlauf getestet und die Abarbeitung gestoppt, wenn sie nicht erfüllt ist. Hier testet man, ob der Zähler schon einen bestimmten Wert erreicht hat. Ausdruck2 wird am Ende jedes Durchlaufs ausgeführt, hier wird man also den Wert des Zählers anpassen. Ausdruck3 wird in jedem Durchlauf einmal ausgeführt, es können auch mehrere Anweisungen dort stehen, wenn sie in geschweiften Klammern stehen. FOR($i=1;$i<5;$i++;) { anweisungen; } In dieser Schleife wird i auf den Anfangswert 1 gesetzt. Dann wird getestet, ob i noch kleiner als 5 ist und wenn diese Bedingung erfüllt ist, wird i um 1 erhöht. Dann werden die Anweisungen ausgeführt. Das Foreach-Konstrukt ermöglicht das einfache Durchlaufen eines Arrays. Eine Übersicht über vordefinierte Variablen gibt es unter http://www.php.net/manual/de/reserved.variables.php\#reserved.variables.server und für Funktionen unter http://www.php.net/manual/de/index.functions.php.