Webdatenbanken (PHP und MySQL) - mttcs. ? Webdatenbanken (PHP und MySQL) Seminar 1: Installation und

  • Published on
    05-Jun-2018

  • View
    212

  • Download
    0

Transcript

  • Webdatenbanken (PHP und MySQL)

    Seminar 1: Installation und Einfhrung Fr 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 fr verschiedene Betriebssysteme erklrt. Nach erfolgreicher Installation wird das System gestartet, indem man die xampp_start.exeim Verzeichnis xampp ausfhrt. Apache- und MySQL-Server laufen jetzt im Hintergrund. PHP ist ebenfalls installiert, muss aber nicht stndig als Prozess im Hintergrund laufen. Es wird ja nur bentigt, wenn PHP-Skripte abgearbeitet werden mssen. Zur Arbeit mit Datenbanken verwenden wir also einen Webserver (Apache), einen Datenbankserver (MySQL), einen Webbrowser (relativ beliebig) und eine Skriptsprache (PHP), um die gewnschten Funktionalitten zu programmieren. Wer einen anderen Webserver verwenden will, kann das tun, muss sich dann aber selbst um die Anbindung an PHP und MySQL kmmern. Man kann die Installation testen, indem man einen Browser ffnet und als Adresse localhost eingibt. Nun sollte die lokale Startseite von XAMPP geffnet werden. Die Dateien dazu liegen im Verzeichnis xampp\htdocs. Dieses Verzeichnis ist in der Konfigurationsdatei von Apache voreingestellt. Dort werden spter auch alle selbst erstellten Dateien abgelegt werden, wobei man beliebige Unterverzeichnisse erstellen kann. Auf der geffneten 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 erfhrt auch gleich, was zu tun ist, um den Rechner sicher zu machen. Folgen Sie einfach den Anweisungen. Durch Klick auf phpinfo() kann man schlielich 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 folgendermaen: 1. Ein Nutzer ruft in seinem Web-Browser ber die URL eine Webseite auf. Ist diese Datei ein

    PHP-Skript oder enthlt 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 unverndert gelassen, PHP-Befehle werden ausgefhrt. Das heit, 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 empfngt die Anfrage, fhrt sie aus und gibt das Ergebnis an PHP zurck. 4. PHP fhrt mit der Bearbeitung des Skripts fort bis zum Ende. Eine HTML-Datei ist entstanden. 5. Der Webserver schickt diese HTML-Datei zurck zum Browser des Nutzers.

  • 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. Fr 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 mssen. Es knnen 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 verndern. 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, fgt 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

  • 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 fr das htdocs-Verzeichnis angeboten, ein Passwort anzugeben. Man kann den Apache-Server aber auch noch auf andere Weise gegen Zugriffe von auen schtzen. Um einen Zugriff auf den Server nur vom eigenen Rechner aus zu gestatten, muss man den entsprechenden Eintrag in der Datei httpd.conf ndern. Standardmig findet man folgende Zeilen: Order allow,deny Allow from all Die erste Zeile gibt die Reihenfolge der Prioritten an, deny hat eine hhere Prioritt 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. Mchte man nun bestimmten Rechnern den Zugriff gestatten, muss man die Reihenfolge der Prioritten ndern und in der zweiten Zeile allow from ...., deny from all angeben. Vergisst man die nderung der Prioritten, wrde man zwar zuerst einem bestimmten Rechner den Zugriff gestatten, mit deny from all aber allen Rechnern den Zugriff verbieten und wegen der hheren Prioritt von deny auch den zuerst angegebenen Rechner mit ausschlieen. 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.. untersttzen, 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 fhren Sie es aus! Der Quelltext des Skriptes sieht folgendermaen aus: PHP Beispiel 1: Einfache Anweisungen Beispiel 1: Einfache Anweisungen Hallo,

    http://www.goldmann.de/apache-konfigurieren/_tipp/_33.htmlhttp://www.php-editors.com/review/

  • Der Browser ist

    Heute ist der

    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 luft 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 auszufhren 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 htten die Browser ein Problem. PHP ist eine serverseitige Skriptsprache, d.h., PHP luft auf dem Server und der Client hat nicht die Fhigkeit, mit PHP berhaupt etwas anzufangen. Deshalb muss das PHP-Skript auf dem Server browserverstndliches HTML erzeugen.

    Einfhrung PHP In diesem Seminar geht es darum, mit PHP ber das Internet auf Datenbanken zuzugreifen. Ein ausfhrliches PHP-Handbuch auf deutsch findet man unter http://www.php.net/manual/de/intro-whatcando.php, das Skript enthlt nur eine kurze Einfhrung. PHP-Anweisungen knnen 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 fr den Programmierer bersichtlicher und besser lesbar zu gestalten. Einzeilige

  • Kommentare werden durch // oder # gekennzeichnet, mehrzeilige Kommentare mit einem /* am Anfang und */ am Ende. Alle Variablennamen in PHP beginnen mit einem Dollarzeichen, gefolgt von einem Buchstaben oder Unterstrich. Sie knnen beliebig lang sein und bestehen aus Buchstaben, Zahlen und Unterstrichen. PHP unterscheidet bei Variablennamen zwischen Gro- und Kleinschreibung! Variablen drfen den gleichen Namen haben wie eine eingebaute Funktion, was allerdings irritierend ist und deswegen vermieden werden sollte. Eigene Funktionen drfen 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 enthlt eine Referenz auf eine externe Ressource NULL Variable, die keinen Wert enthlt Es ist in PHP mglich, einen Variablennamen zu verndern (variable Variablen). Das kann ntzlich sein, wenn man z.B. in einer Schleife die Variablen eines Formulars auslesen mchte. Konstanten werden mit define definiert. Konstantenbezeichner beginnen mit einem Dollarzeichen. Fr den Gltigkeitsbereich der Variablen gibt es 3 Mglichkeiten: globale Variablen werden im Skript deklariert und sind im gesamten Skript gltig, aber nicht

    in Funktionen lokale Variablen werden in Funktionen benutzt und sind nur dort gltig globale Variablen in Funktionen, auch in Funktionen knnen 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 ausfhrliche bersicht hier verzichtet. Fr unsere Anwendungen ist der Operator zur Verkettung von Strings wichtig, ein ".. Die arithmetischen Operatoren sind " +,-,*,/" und "%" fr 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

  • fehlschlgt, wird der Wert "0" angenommen und damit die Operation ausgefhrt. Die Operatoren lassen sich auch kombinieren. So kann man z.B. statt $a = $a + 5; auch verkrzt schreiben $a +=5; Auerdem gibt es Operatoren, um Werte von Variablen um 1 zu erhhen 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 erhht 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 erhht. 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. Fr Verzweigungen gibt es folgende Konstrukte: IF(bedingung){ anweisungen; } ELSE { anweisungen; }

  • Die geschweiften Klammern dienen zur Begrenzung eines Anweisungsblockes, falls mehrere Anweisungen ausgefhrt werden sollen, bei nur einer Anweisung kann man sie auch weglassen. IF-Anweisungen knnen auch geschachtelt werden. Um mehr als 2 Alternativen angeben zu knnen, wird die ELSEIF-Anweisung benutzt. IF(bedingung1) anweisung; ELSEIF(bedingung2) Anweisung; ELSEIF(bedingung3) Anweisung; Es knnen beliebig viele ELSEIF-Anweisungen untereinander stehen. Nur die Anweisungen hinter der ersten Bedingung, die als "wahr" erkannt wird, werden ausgefhrt. 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 fhrt 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 ausgefhrt! SWITCH($variable) { CASE wert1 : anweisungen; break; CASE wert2 : anweisungen; break; DEFAULT : anweisungen; break; } Fr Schleifen gibt es den abweisenden Zyklus: WHILE(bedingung) { anweisungen; } Die Bedingung wird vor der Abarbeitung jedes Zyklus getestet, die nachfolgenden Anweisungen werden nur ausgefhrt, wenn die Bedingung erfllt (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 ausgefhrt werden sollen. Manchmal ist

  • es auch erforderlich, diese Strukturen vorzeitig zu verlassen. Wenn man die Abarbeitung in einer Schleife abbrechen und mit dem nchsten 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 abschlieenden HTML-Tags in die Ausgabe schreiben, um die HTML-Datei ordnungsgem zu beenden. sowie die Zhlschleife: FOR(ausdruck1; bedingung; ausdruck2) Ausdruck3; Ausdruck 1 wird genau einmal beim Start der Schleife ausgefhrt, hier wird in der Regel der Anfangswert eines Zhlers gesetzt. Die Bedingung wird vor jedem Durchlauf getestet und die Abarbeitung gestoppt, wenn sie nicht erfllt ist. Hier testet man, ob der Zhler schon einen bestimmten Wert erreicht hat. Ausdruck2 wird am Ende jedes Durchlaufs ausgefhrt, hier wird man also den Wert des Zhlers anpassen. Ausdruck3 wird in jedem Durchlauf einmal ausgefhrt, es knnen auch mehrere Anweisungen dort stehen, wenn sie in geschweiften Klammern stehen. FOR($i=1;$i

Recommended

View more >