268

Meine dynamische Website mit PHP, MySQL und Apache GERMAN

Embed Size (px)

Citation preview

Page 1: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN
Page 2: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Website Deluxemit PHP & Co

2-6496.book Page 1 Tuesday, November 19, 2002 3:47 PM

Page 3: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Jochen Naumann

Markt+Technik Verlag

Website Deluxe mit PHP & Co

11 Workshops

2-6496.book Page 3 Tuesday, November 19, 2002 3:47 PM

Page 4: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Die Deutsche Bibliothek verzeichnet diese Publikation in der DeutschenNationalbibliografie; detaillierte bibliografische Daten sind im Internetüber http://dnb.ddb.de abrufbar.

Die Informationen in diesem Produkt werden ohne Rücksicht auf einen eventuellen Patentschutz veröffentlicht.Warennamen werden ohne Gewährleistung der freien Verwendbarkeit benutzt.Bei der Zusammenstellung von Texten und Abbildungen wurde mit größter Sorgfalt vorgegangen.Trotzdem können Fehler nicht vollständig ausgeschlossen werden.Verlag, Herausgeber und Autoren können für fehlerhafte Angabenund deren Folgen weder eine juristische Verantwortung nochirgendeine Haftung übernehmen.Für Verbesserungsvorschläge und Hinweise auf Fehler sind Verlag undHerausgeber dankbar.

Alle Rechte vorbehalten, auch die der fotomechanischen Wiedergabe und derSpeicherung in elektronischen Medien. Die gewerbliche Nutzung der in diesem Produkt gezeigten Modelle und Arbeiten ist nicht zulässig.

Fast alle Hardware- und Softwarebezeichnungen, die in diesem Buch erwähnt werden,sind gleichzeitig auch eingetragene Marken oder sollten als solche betrachtet werden.

Umwelthinweis:Dieses Buch wurde auf chlorfrei gebleichtem Papier gedruckt.Die Einschrumpffolie – zum Schutz vor Verschmutzung – ist aus umweltverträglichemund recyclingfähigem PE-Material.

10 9 8 7 6 5 4 3 2 1

06 05 04 03

ISBN 3-8272-6496-0

© 2003 by Markt+Technik Verlag,ein Imprint der Pearson Education Deutschland GmbH,Martin-Kollar-Straße 10–12, D-81829 München/GermanyAlle Rechte vorbehaltenUmschlaggrafik: WEBWO-Graphics, Marco Lindenbeck, MünchenLektorat: Jürgen Bergmoser, [email protected]: Philipp Burkart, [email protected]: mediaService, SiegenDruck und Verarbeitung: Media Print, PaderbornPrinted in Germany

2-6496.book Page 4 Tuesday, November 19, 2002 3:47 PM

Page 5: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

5

Inhaltsverzeichnis

Inhaltsverzeichnis

Die CD-ROM zum Buch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9Vorwort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11Über den Autor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

Workshop 1: Der dynamische Dreikampf: PHPTriad 131.1 PHPTriad – was ist das? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131.2 Die Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151.3 Achtung, fertig, los!. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161.4 Webspace im Internet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221.5 Für Neugierige. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

Workshop 2: Sherlock Holmes und Dr. PHP 312.1 Ein einfacher Seitenzähler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322.2 Besucherstatistiken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

Workshop 3: Beehren Sie uns bald wieder 493.1 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503.2 Handhabung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533.3 Administration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563.4 Anpassen von Layout und Design . . . . . . . . . . . . . . . . . . . . . . . . 58

2-6496.book Page 5 Tuesday, November 19, 2002 3:47 PM

Page 6: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

6

Inhaltsverzeichnis

Workshop 4: Was mache ich mit all den Daten? 634.1 Was bietet Phorm? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644.2 Vorbereiten des Testsystems . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644.3 Installation von Phorm. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664.4 Ein einfaches Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674.5 Alles O.k.? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684.6 Ab in die Datenbank! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 704.7 Anpassen der Bestätigungsseite . . . . . . . . . . . . . . . . . . . . . . . . . . 754.8 Der Umgang mit mehreren Formularen . . . . . . . . . . . . . . . . . . 76

Workshop 5: Jetzt wird es bunt! 835.1 Die Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 845.2 Do it yourself . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 885.3 Weitere Extras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 935.4 MySQL als Datenquelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 965.5 Hilfe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

Workshop 6: Einladung zum Diaabend 1056.1 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1066.2 Let the show begin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1106.3 Keine Chance für Voyeure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1136.4 Gallery Remote . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116

Workshop 7: Gibt’s was Neues? 1217.1 Die Installation von SimpleNews . . . . . . . . . . . . . . . . . . . . . . . 1227.2 Das sind ja Neuigkeiten! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1267.3 Anpassen des Designs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1297.4 Darf’s ein bisschen mehr sein? . . . . . . . . . . . . . . . . . . . . . . . . . . 1327.5 News-Beiträge in die eigene Seite einbauen . . . . . . . . . . . . . . . 136

2-6496.book Page 6 Tuesday, November 19, 2002 3:47 PM

Page 7: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

7

Inhaltsverzeichnis

Workshop 8: Schweigen ist Silber, Reden ist Gold 1418.1 Installation des Chats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1438.2 Ist da jemand? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1478.3 Die Administration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1508.4 Chat-Hygiene . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1538.5 Anpassen des Layouts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156

Workshop 9: Jede Stimme zählt 1639.1 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1649.2 Erstellen neuer Umfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1689.3 Einbetten der Umfrage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1719.4 Anpassen des Erscheinungsbildes . . . . . . . . . . . . . . . . . . . . . . . 1769.5 Hilfe!. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183

Workshop 10: Sagen Sie Ihre Meinung 18510.1 Historisch gewachsen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18610.2 Die Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18710.3 Neues Forum einrichten. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19210.4 Einen eigenen Beitrag schreiben . . . . . . . . . . . . . . . . . . . . . . . . 19410.5 Schutzmechanismen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19610.6 Anpassen des Layouts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19710.7 Patches und Erweiterungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201

Workshop 11: Und Sie dachten, es wäre schwierig ... 20311.1 PHPNuke – die Eier legende Wollmilchsau . . . . . . . . . . . . . . . 20411.2 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20511.3 Erste Schritte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20811.4 Ein bisschen Aufräumarbeit. . . . . . . . . . . . . . . . . . . . . . . . . . . . 210

2-6496.book Page 7 Tuesday, November 19, 2002 3:47 PM

Page 8: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

8

Inhaltsverzeichnis

11.5 Sail away .... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21311.6 Artikel schreiben und veröffentlichen. . . . . . . . . . . . . . . . . . . . 21811.7 Schlussbemerkung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221

Anhang A: Farben in HTML 223

Anhang B: PHP nebenbei gelernt 227B.1 Das erste PHP-Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228B.2 Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229B.3 Variablen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230B.4 Formularauswertung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231B.5 Kontrollstrukturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233B.6 Operatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236B.7 Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241B.8 Einbinden von Dateien. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243B.9 Globale und lokale Variablen. . . . . . . . . . . . . . . . . . . . . . . . . . . 244B.10 Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245B.11 Häufige Fehler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245B.12 Hilft mir denn keiner? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247

Anhang C: Was ist Open-Source-Software? 253

Anhang D: Troubleshooting 255D.1 MySQL Demon und Apache gestartet? . . . . . . . . . . . . . . . . . . . 255D.2 Ist der MySQL-Benutzer „donald“ erzeugt worden? . . . . . . . . 256D.3 Winzip und .tar.gz-Dateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256D.4 Dateirechte auf dem Webspace . . . . . . . . . . . . . . . . . . . . . . . . . 256D.5 Scriptkonfiguration für Webspace . . . . . . . . . . . . . . . . . . . . . . 256

Glossar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257

Stichwortverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265

2-6496.book Page 8 Tuesday, November 19, 2002 3:47 PM

Page 9: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Die CD-ROMzum Buch

Die CD-ROM zum Buch

Die dem Buch beiliegende CD-ROM enthält ausser PHP, MySQL und Apache dasTool PHPTriad, Texteditoren und alle vorgestellten Skripte.

\softwareAdvancedPoll Skript für Umfragen

Apache Apache Webserver (Windows)

CounterCaffee Script für Besucherstatistiken

Gallery Fotoalbum

JpGraph Script für Diagramme

MySQL MySQL-Datenbank (Windows)

PGB Script für Gästebuch

Phorm Formularauswertung

Phorum Script für Foren

PHP PHP Scriptprozessor (Windows)

PHP Triad PHP, MySQL und Apache für Windows

PHPNuke Content-Management-System

PHPOpenChat Chat-System

Simplenews News-System

SmartFTP FTP-Client

Texteditoren Textpad und Jedit

XCount Seitenzähler

2-6496.book Page 9 Tuesday, November 19, 2002 3:47 PM

Page 10: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

2-6496.book Page 10 Tuesday, November 19, 2002 3:47 PM

Page 11: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

erstellt von ciando

Vorwort

VorwortDie eigene Homepage íst heutzutage nichts Besonderes mehr. Wenn Ihre Homepageaus dem Einheitsbrei herausstechen soll, müssen Sie schon ein bisschen mehr bietenals die anderen. Dynamische Aspekte sind gefragt, ob nun ein einfacher Seitenzähler,ein Chat oder ein Fotoalbum mit den Bildern Ihres letzten Urlaubs.

Aber gerade solche dynamischen Komponenten sind nicht ohne weiteres zu realisie-ren. Normalerweise müssen Sie profunde Kenntnisse in einer Skriptsprache wie Perl,PHP oder ASP haben. Außerdem wird oft noch eine Datenbankanbindung benötigt,also gesellt sich zu den erforderlichen Kenntnissen noch SQL, die Datenbankabfra-gesprache, hinzu.

Vielleicht gehören Sie zu den Leuten, die sagen: „Das Leben ist zu kurz, um dies alleszu lernen.“ Prima, dann sind Sie eine der möglichen Zielgruppen dieses Buches, dennes werden lediglich HTML-Kenntnisse vorausgesetzt, und selbst die sind nicht absolutnotwendig.

Für jeden Workshop in diesem Buch finden Sie auf der CD-ROM ein fertiges Skript,das Sie nur noch installieren und geringfügig anpassen müssen, und schon können Sieloslegen! Zu verdanken haben Sie das der Open-Source-Bewegung, die es sich zumZiel gemacht hat, gute Software umsonst – ja, Sie haben richtig gelesen: gratis – zurVerfügung zu stellen.

Gerade im Bereich Webtechnologien gibt es eine große Vielfalt an frei erhältlicherSoftware, die aber oftmals einen Haken hat: Die Dokumentation ist nicht so gut, daherist es für Laien schwierig, diese Software zu benutzen.

Dieses Problem möchte ich beheben, indem ich Ihnen in den nächsten 11 Workshopsfreie Software vorstelle und Sie bei Ihren ersten Schritten mit dieser Software begleite.

Ich wünsche Ihnen viel Spaß dabei und steigende Besucherzahlen auf Ihrer Homepage!

Jochen NaumannOktober 2002

[email protected]

2-6496.book Page 11 Tuesday, November 19, 2002 3:47 PM

Page 12: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

12

Über den Autor

Über den AutorJochen Naumann studierte Informatik an derTU Darmstadt und ist seit vielen Jahren alsTrainer, Dozent und Berater im Bereich Web-technologien unterwegs. Zu seinem Kunden-kreis zählen namhafte Unternehmen wie dieESA, Telekom, Siemens, Accenture, ZDF undandere. Neben der Schulungstätigkeit schreibter Informatik-Lehrhefte für ein Fernlehrinstitut.

Seine Freizeit verbringt er am liebsten mit seinerFamilie und spielt mit seiner kleinen TochterMaja. Ab und zu versucht er zu joggen oder zusaunieren. Manchmal klappt es auch.

Durch seine positiven Erfahrungen mit Open-Source-Software auch bei größeren Projektenist er überzeugter Verfechter von „freier“ Soft-ware. Der Markt+Technik Verlag gab ihm jetztdie Chance, sein Wissen und seine Überzeu-gung einem breiten Publikum in Buchform zur Verfügung zu stellen.

Schreiben Sie uns!Autor und Verlag sind immer bemüht Ihnen, unseren Kunden und Lesern die optimaleInformation zum Thema zu bieten. Scheuen Sie sich deshalb nicht, uns über Fehler undandere Ärgernisse zu informieren. Nur so können wir laufend an der Verbesserung un-serer Bücher arbeiten. Aber auch Lob, Erfolgserlebnisse und Ihre Ergebnisse interessie-ren uns. Schreiben Sie uns unter [email protected]. Ihre Mails werden sofort anden Autor weitergeleitet!

Ihr Markt+Technik-Buchlektorat

Jürgen Bergmoser

[email protected]

Der Autor in seiner Werkstatt

2-6496.book Page 12 Tuesday, November 19, 2002 3:47 PM

Page 13: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Workshop 1

Der dynamische Dreikampf: PHPTriad

PHP, MySQL und Apache – das Gewinnerteam !

Sie benutzen im weiteren Verlauf dieses Buches ein Softwaretrio namens PHPTriad,dessen Mitglieder zu dem Besten zählen, was auf dem Markt erhältlich ist. Nebenbeiist es auch noch völlig kostenlos! Wo ist der Haken, fragen Sie? Es gibt keinen. PHP-Triad ist durch und durch empfehlenswert und wird vielfach auch im professionellenBereich eingesetzt. In diesem ersten Kapitel erfahren Sie mehr über das GewinnerteamPHPTriad, seine Bestandteile, den Sinn und Zweck, die Installation und den Ge-brauch.

1.1 PHPTriad – was ist das?Wenn Sie Webseiten mit dynamischen Inhalten erzeugen wollen, brauchen Sie dreiKomponenten:

■ eine Datenbank, in der Inhalte abgelegt sind

■ eine Programmiersprache, die die Inhalte aus der Datenbank liest und in eineHTML-Seite einbaut

■ einen Webserver, der die erzeugte HTML-Seite an einen Browser schickt

Für jede dieser Komponenten gibt es eine Vielzahl an Software: Als Webserver könnenSie zum Beispiel den IIS von Microsoft einsetzen, als Programmiersprache Java und alsDatenbank Oracle.

2-6496.book Page 13 Tuesday, November 19, 2002 3:47 PM

Page 14: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

14

Der dynamische Dreikampf: PHPTriad

Nun existiert aber eine Kombination aus Produkten, die ein eingespieltes und in derPraxis erprobtes Team bilden:

■ die Datenbank MySQL (mehr Infos unter http://www.mysql.org)

■ die Programmiersprache PHP (http://www.php.net)

■ der Webserver Apache (http://www.apache.org)

Sie können sich jetzt viel Arbeit machen und jede Software einzeln besorgen und nach-einander installieren. Allerdings ist es recht aufwändig, die Komponenten so zu kon-figurieren, dass sie später reibungslos zusammenarbeiten.

Doch zum Glück für Sie haben sich schon andere Leute die Mühe gemacht und genaudie oben erwähnte Kombination aus Produkten zusammengefasst. Das Ganze nenntsich PHPTriad. Mit PHPTriad müssen Sie nur eine Installationsroutine aufrufen unddie einzelnen Komponenten sind auch schon für den gemeinsamen Einsatz vorkonfi-guriert. Wie gut, dass es so viele Leute gibt, die aus Idealismus und Spaß an der Sachesolche Projekte ermöglichen: PHPTriad ist kostenlos.

Wenn Sie mehr über PHPTriad erfahren wollen, besuchen Sie die Homepage unterhttp://sourceforge.net/projects/phptriad.

PROF

ITIP

P Sie sind nicht auf genau diese Kombination angewiesen. Insbesonderedie Art des Webservers ist für die Workshops in diesem Buch unerheb-lich. Auch die Datenbank könnten sie theoretisch austauschen, aller-dings muss dann einiges an den fertigen Programmen auf der CDgeändert werden. Unabdingbar ist nur, dass Sie PHP benutzen.

PROF

ITIP

P

PHPTriad gibt es nur für Windows. Sollten Sie unter Linux arbeiten,müssen sie die Komponenten einzeln installieren. Die dazu nötigeSoftware ist bei den gängigen Linux-Distributionen wie SuSE enthal-ten und wird bei der Installation meist auch korrekt konfiguriert. Desweiteren sollte man beachten, dass man mit PHPTriad nicht die neu-esten Versionen der darin beinhalteten Programme bekommt unddass PHPTriad noch Beta-Status hat, dass heißt noch nicht ganz aus-gereift ist. Alle Skripte in diesem Buch laufen aber unter PHPTriad.

2-6496.book Page 14 Tuesday, November 19, 2002 3:47 PM

Page 15: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Die Installation

15

1.2 Die InstallationDie Installation gestaltet sich sehr einfach, aber leider auch unflexibel. Die gesamteSoftware wird im Ordner c:\apache installiert, was nicht änderbar ist. Dafür müssen Sielediglich das Setup-Programm starten und warten, bis die Installation beendet ist –ohne nervige Fragen zwischendurch.

So gehen Sie Schritt für Schritt vor, um PHPTriad zu installieren:

1 Legen Sie die zum Buch gehörige CD-ROM ein und wechseln Sie in das Ver-zeichnis software.

2 Doppelklicken Sie auf die Datei phptriad2-2-1.exe.

3 Es öffnet sich ein Fenster, in dem Sie gebeten werden, die Nutzungsbedingungen zu akzeptieren. Klicken Sie auf I Agree.

4 Die Installation startet nun. Wenn Sie die Schaltfläche Details drücken, können Sie mitverfolgen, was gerade passiert (Abbildung 1.1).

Abbildung 1.1: Installation von PHPTriad

5 Sobald das Setup-Programm alle Schritte ausgeführt hat, klicken Sie auf die Schaltfläche Close. Die Software ist nun fertig installiert und einsatzbereit.

2-6496.book Page 15 Tuesday, November 19, 2002 3:47 PM

Page 16: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

16

Der dynamische Dreikampf: PHPTriad

1.3 Achtung, fertig, los!Nachdem die Installation erfolgreich war, brennt es Ihnen sicherlich schon unter denNägeln, die Software zu testen. Da die Komponenten aufeinander aufbauen, probierenwir sie erst der Reihe nach aus und lassen sie dann alle zusammen eine erste daten-bankgestützte Webseite produzieren. Los geht’s.

Go, Apache!Um den Webserver Apache zu benutzen, muss er zunächst gestartet werden. Bei derInstallation von PHPTriad wird ein neuer Menüpunkt Programs zum Windows-Start-menü hinzugefügt. Darunter finden Sie den Eintrag PHPTriad und hier schließlicheinige Hilfsprogramme zum Bedienen der Software. Zum Starten des Webserversgehen Sie wie folgt vor:

1 Wählen Sie im Startmenü unter Programs/PHPTriad/Apache Console den Eintrag Start Apache (Abbildung 1.2).

Abbildung 1.2: Starten des Webservers

2 Es öffnet sich ein Konsolenfenster, in dem der erfolgreiche Start des Webservers bestätigt wird (Abbildung 1.3). In diesem Fenster werden auch eventuelle Fehler angezeigt, die während des Betriebs von Apache auftreten können.

Abbildung 1.3: Apache-Konsolenfenster

2-6496.book Page 16 Tuesday, November 19, 2002 3:47 PM

Page 17: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Achtung, fertig, los!

17

Laut Apache-Konsolenfenster ist der Webserver jetzt gestartet. Aber Vertrauen ist gut,Kontrolle ist besser! Öffnen Sie zum Testen einen Browser und tippen Sie in die URL-Leiste http://localhost. Localhost ist ein Synonym für den eigenen Rechner, Sie verbindensich also mit Ihrem Computer. Sollte alles gut gehen, sehen Sie eine Begrüßungsmeldungvon PHPTriad (Abbildung 1.4).

Abbildung 1.4: Testen des Webservers

VORS

ICHT

!Schließen Sie dieses Fenster nicht direkt, denn dadurch beenden Sieden Webserver auf unsanfte Weise. Wenn Sie Apache wirklich been-den wollen, benutzen Sie dazu den Befehl Stop Apache unter Pro-grams/PHPTriad/Apache Console im Windows-Startmenü.

VORS

ICHT

!

Stellen Sie sicher, dass nicht der IIS-Webserver von Microsoft oderein anderer Webserver auf Ihrem System bereits gestartet ist. Dieskönnte unter Windows NT oder Windows 2000 Server der Fall sein.Apache würde dann nicht korrekt funktionieren. Sie müssten entwe-der den zweiten Webserver beenden oder den Webservern unter-schiedliche TCP-Ports zuweisen. Dies können Sie unter Windows2000 erreichen, indem Sie den Interdienste-Manager aufrufen imStartmenü unter Programme-Verwaltung.

2-6496.book Page 17 Tuesday, November 19, 2002 3:47 PM

Page 18: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

18

Der dynamische Dreikampf: PHPTriad

Go, PHP!Nachdem wir festgestellt haben, dass die erste Komponente funktioniert, testen wirjetzt die Skriptsprache PHP. Eine Testseite mit PHP-Anweisungen ist in dem komfor-tablen Paket PHPTriad natürlich auch schon vorhanden, wir müssen sie nur noch mitdem Browser aufrufen.

Geben Sie dazu die URL http://localhost/phpinfo.php ein. Sie sollten eine Seite wie inAbbildung 1.5 gezeigt erhalten.

Abbildung 1.5: Testen von PHP

Diese Testseite gibt Ihnen viele Informationen zur PHP-Installation, zum Beispiel,welche Version sie benutzen oder welche Module mitgeliefert wurden.

Go, MySQL!Kommen wir nun zur Datenbank. Auch hier muss wie beim Webserver zunächst derentsprechende Hintergrundprozess gestartet werden: der Datenbankserver. Sie findendazu im Startmenü unter Programs/PHPTriad/MySQL zwei Einträge: MySQL-D undMySQL-D-NT.

■ MySQL-D benutzen Sie für Windows 95/98/Me.

■ MySQL-D-NT benutzen Sie für Windows NT, Windows 2000 oder XP.

2-6496.book Page 18 Tuesday, November 19, 2002 3:47 PM

Page 19: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Achtung, fertig, los!

19

Wenn Sie einen passenden Eintrag ausgewählt haben, erscheint kurz ein Konsolen-fenster, das aber gleich wieder verschwindet. Keine Sorge, das ist normal und richtigso. Der Datenbankserver sollte jetzt laufen.

Abbildung 1.6: MySQL-Hintergrundprozess

Um sich mit einer Datenbank zu unterhalten, wird entweder ein grafisches Tool be-nutzt, wie Sie es vielleicht von Microsoft Access kennen, oder die DatenbankspracheSQL (Standard Query Language). MySQL ist zwar eine ausgezeichnete Datenbank, hataber von Haus aus nicht den Benutzungskomfort von Access. Also greifen wir zumTesten zunächst auf SQL zurück. Im nächsten Abschnitt werden Sie dann sehen, wieman MySQL noch einfacher und benutzerfreundlicher bedienen kann.

PROF

ITIP

P

Der Hintergrundprozess, den Sie soeben gestartet haben, nennt sichmysqld.exe bzw. mysqld-nt.exe. Sie können überprüfen, ob dieses Pro-gramm läuft, indem Sie sich die Prozessliste im Windows Task Mana-ger anschauen (Abbildung 1.6). Dort finden Sie übrigens auch denProzess für den Webserver mit dem Namen Apache.exe. Wollen Sieohne einen Neustart Ihres Rechners den Datenbankserver beenden,verwenden Sie dazu im Task Manager die Schaltfläche Prozess beenden.

2-6496.book Page 19 Tuesday, November 19, 2002 3:47 PM

Page 20: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

20

Der dynamische Dreikampf: PHPTriad

Zum Testen des Datenbankservers gehen Sie wie folgt vor:

1 Öffnen sie ein Konsolenfenster (im Windows-Startmenü unter Programme/Zubehör/Eingabeaufforderung ).

2 Geben Sie cd \apache\mysql\bin ein, um in das Verzeichnis zu wechseln, in dem die ausführbaren MySQL-Dateien gespeichert sind.

3 Geben sie mysql ein, um den interaktiven MySQL-Monitor zu starten, mit dessen Hilfe Sie SQL-Befehle an die Datenbank schicken können.

4 Wenn Sie nun die Willkommensmeldung von MySQL (Abbildung 1.7) erscheint, ist alles in Ordnung.

5 Lassen Sie uns zum Test noch einen SQL-Befehl absetzen. Geben Sie show data-bases ein. Dieser Befehl zeigt die vorhandenen Datenbanknamen.

Abbildung 1.7: Testen von MySQL

6 Geben Sie quit ein, um den SQL-Monitor zu verlassen.

7 Schließen Sie das Konsolenfenster.

Und jetzt alle zusammen ...Jetzt kommt der große Augenblick: Die Triade soll zum ersten Mal gemeinsam agie-ren. Zum Testen nehmen wir ein webbasiertes Tool, das in PHP geschrieben ist unddie benutzerfreundliche Bedienung von MySQL über einen Browser ermöglicht. Die-ses Tool mit Namen phpMyAdmin ist Bestandteil von PHPTriad, was erneut die Viel-seitigkeit dieses Softwarepakets beweist.

2-6496.book Page 20 Tuesday, November 19, 2002 3:47 PM

Page 21: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Achtung, fertig, los!

21

Im Prinzip ist phpMyAdmin nichts anderes als eine Sammlung von Webseiten mitPHP-Skripten, die sich mit der Datenbank verbinden und diverse SQL-Kommandosausführen. Sie können phpMyAdmin benutzen, um neue Datenbanktabellen anzule-gen, sie mit Inhalt zu füllen und vieles mehr.

Genug der Vorrede, geben Sie nun im Browser die URL http://localhost/phpmyadmin/ein, um auf die Startseite dieses sagenhaften Tools zu kommen. Wenn Sie keine Feh-lermeldung bekommen und eine Seite ähnlich der in Abbildung 1.8 angezeigt wird,hat PHPTriad den Test bestanden. Was genau ist dabei passiert?

■ Der Browser hat die URL der Seite, die angezeigt werden soll, dem Webserverübermittelt.

■ Apache hat erkannt, dass es sich nicht um eine normale HTML-Seite, sondernum eine Seite mit PHP-Befehlen handelt.

■ Die PHP-Bestandteile wurden an den PHP-Interpreter gesendet, der die Befehleausgeführt und eine Verbindung mit MySQL aufgebaut hat.

■ MySQL führt die von PHP übergebenen SQL-Anweisungen aus und liefert dieResultate an PHP zurück.

■ PHP übergibt dem Webserver die fertige Seite.

■ Apache übermittelt schließlich die Seite mit Inhalten aus der Datenbank an denBrowser.

Abbildung 1.8: Startseite von phpMyAdmin

2-6496.book Page 21 Tuesday, November 19, 2002 3:47 PM

Page 22: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

22

Der dynamische Dreikampf: PHPTriad

1.4 Webspace im Internet

Meine Seiten sollen ins Netz!Ihre dynamische Website ist fertig und läuft bei Ihnen zu Hause auch wunderbar. Wasist der nächste Schritt? Die Seiten müssen ins Internet, damit jeder sie bewundernkann. Dazu brauchen Sie so genannten Webspace, Speicherplatz auf einem Rechnerim Internet, wo Sie Ihre Daten und Seiten ablegen können. Anbieter von Webspacenennt man auch Hoster.

Nun können Sie nicht jeden beliebigen Hoster nehmen, denn Ihre Website benötigt jaPHP und MySQL, die beide auch beim Hoster installiert sein müssen. Zum Glück istPHP in Kombination mit MySQL aber sehr weit verbreitet in Bezug auf Skriptspra-chen und Datenbanken im Internet, daher bieten inzwischen nahezu alle Hoster einentsprechendes Paket an. Achten Sie auch darauf, dass der Hoster einen Zugang zurDatenbank über das Tool phpMyAdmin anbietet, da dies der komfortabelste Weg ist,MySQL zu bedienen.

Die Angebote für Webspace mit PHP/MySQL-Unterstützung schwanken preislichsehr. In Abbildung 1.9 sehen Sie ein Beispiel des Anbieters hostweb, das Ihnen als An-haltspunkt für eigene Preisrecherchen dienen soll.

PROF

ITIP

P Wenn Sie sich über einen großen Provider wie T-Online oder AOLins Internet einwählen, haben Sie in der Regel zwar Webspace kosten-los zur Verfügung, aber keine PHP/MySQL-Unterstützung. Sie müs-sen sich also zusätzlichen Webspace besorgen.

2-6496.book Page 22 Tuesday, November 19, 2002 3:47 PM

Page 23: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Webspace im Internet

23

Abbildung 1.9: Beispielangebot für Webspace mit PHP/MySQL

Inzwischen können Sie PHP/MySQL-Webspace sogar kostenlos bekommen (Abbil-dung 1.10). Der Anbieter Tripod bietet seit Anfang 2002 auf seinem kostenlosen Web-space auch PHP und MySQL ohne zusätzliche Kosten an. Allerdings bekommenBesucher Ihrer Seiten dann lästige Werbeeinblendungen auf ihren Bildschirm. WennSie das nicht stört und Sie Ihre Seiten nur für private Zwecke einsetzen, könnte Tripodeine Alternative für Sie sein.

Abbildung 1.10: Kostenloser Webspace von Tripod

2-6496.book Page 23 Tuesday, November 19, 2002 3:47 PM

Page 24: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

24

Der dynamische Dreikampf: PHPTriad

Um Ihnen eine Starthilfe bei der Suche nach Webspace zu geben, sind nachfolgend einpaar URLs von bekannten Anbietern aufgeführt:

■ http://www.einsundeins.de

■ http://www.schlund.de

■ http://www.strato.de

■ http://www.hostweb.de

■ http://tripod.lycos.de

Wie werden meine Daten übertragen?Wenn Sie einen passenden Hoster gefunden haben, müssen Sie Ihre Daten und Datei-en noch übertragen. Dateien werden im Normalfall über FTP auf den Webserverkopiert. Dazu benötigen Sie einen so genannten FTP-Client. Auf der beiliegendenCD-ROM finden Sie ein solches kostenloses Programm mit dem Namen SmartFTP.

Die Installation ist unproblematisch:

1 Wechseln Sie in das Verzeichnis software auf der CD-ROM.

2 Das Installationsprogramm benötigt eine Datei aus dem Internet. Stellen Sie also sicher, dass Sie ins Internet eingewählt sind.

3 Doppelklicken Sie auf die Datei SFTPSetup.exe. Das Setup-Programm startet mit dem Download einer benötigten Datei und zeigt dann eine Begrüßungsmeldung. Wenn Sie möchten, können Sie jetzt die Internet-Verbindung wieder beenden. Klicken Sie auf die Schaltfläche Next.

4 Bestätigen sie, dass Sie mit den Lizenzbestimmungen einverstanden sind und kli-cken Sie wieder auf Next.

5 Wählen Sie im nächsten Bildschirm die Option Typical (Abbildung 1.11).

2-6496.book Page 24 Tuesday, November 19, 2002 3:47 PM

Page 25: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Webspace im Internet

25

Abbildung 1.11: Installation von SmartFTP

6 Klicken sie noch einmal auf Next, um die Installation zu starten.

Wenn die Installation beendet ist, können Sie SmartFTP starten, indem Sie imWindows-Startmenü unter Programme\SmartFTP den Eintrag SmartFTP wählen.Das Programm ist in englischer Sprache verfasst, aber auf der Homepage finden Sieauch eine Möglichkeit, deutsche Sprachunterstützung nachzuinstallieren: http://www.smartftp.com/localization/projects/german/

Um nun Dateien auf Ihren Webspace zu kopieren, gehen Sie wie folgt vor:

1 Starten Sie SmartFTP. Beim ersten Start erscheint zunächst ein Fenster, in dem Sie SmartFTP konfigurieren können. Die Standardeinstellungen können Sie zunächst ohne Änderung übernehmen, klicken sie also auf OK.

2 Es öffnet sich das Hauptfenster von SmartFTP. Um sich nun mit Ihrem Web-space über FTP zu verbinden, tippen Sie in die Adresszeile die URL Ihres FTP-Zugangs sowie Ihren Benutzernamen und Passwort in die entsprechenden Felder Login und Password ein. Die dafür benötigten Informationen haben Sie von Ihrem Hoster bekommen. Drücken Sie danach die (¢)-Taste. SmartFTP ver-sucht daraufhin, eine Verbindung aufzubauen. Auch hierzu müssen Sie natürlich ins Internet eingewählt sein. Wenn alles klappt, bekommen Sie eine Übersicht, welche Dateien und Ordner schon auf Ihrem Webspace zu finden sind (Abbil-dung 1.12).

2-6496.book Page 25 Tuesday, November 19, 2002 3:47 PM

Page 26: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

26

Der dynamische Dreikampf: PHPTriad

Abbildung 1.12: Der FTP-Client SmartFTP

3 Öffnen Sie jetzt den Windows-Explorer und navigieren sie zu den Inhalten, die Sie übertragen möchten. Sie können per Drag&Drop Dateien oder Ordner aus dem Explorer-Fenster in das SmartFTP-Dateifenster ziehen. Sobald Sie die Maustaste loslassen, startet der Dateitransfer. Einfach, nicht wahr?

4 Wollen Sie Inhalte Ihres Webspaces löschen oder umbenennen, können Sie im Dateifenster von SmartFTP so vorgehen, wie Sie es vom Windows-Explorer gewohnt sind. Haben sie alles übertragen und eventuelle Änderungen vorgenom-men, können sie SmartFTP wieder schließen.

Wenn Sie alle Dateien kopiert haben, ist das aber erst die halbe Miete. Der nächsteSchritt besteht darin, die Inhalte aus Ihrer MySQL-Datenbank in die Datenbank IhresWebspaces zu übertragen. Dazu können Sie phpMyAdmin auf beiden Seiten (IhremRechner und dem Internet-Rechner) benutzen. Gehen Sie dabei wie folgt vor:

1 Verbinden Sie sich mit phpMyAdmin auf Ihrem lokalen Rechner: http://local-host/phpMyAdmin/

2 Am linken Bildschirmrand werden alle Datenbanken angezeigt, die von MySQL angelegt wurden. Klicken Sie auf die Datenbank, die Sie kopieren möchten.

2-6496.book Page 26 Tuesday, November 19, 2002 3:47 PM

Page 27: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Webspace im Internet

27

Scrollen Sie etwas nach unten, bis Sie die Funktion Dump (Schema) der Daten-bank anzeigen finden (Abbildung 1.13). Hier wählen Sie die Option Struktur und Daten und aktivieren das Kontrollkästchen Senden.

Abbildung 1.13: Dump einer Datenbank

3 Klicken Sie auf OK. Sie werden dann aufgefordert, den Speicherort für den so genannten Datenbankdump anzugeben. Wählen Sie ein beliebiges Verzeichnis.

4 Verbinden Sie sich mit dem phpMyAdmin-Tool Ihres Webspaces. Die URL hier-für erhalten Sie von Ihrem Hoster.

5 Auf der Startseite von phpMyAdmin finden Sie die Funktion Neue Datenbank erzeugen (Abbildung 1.14). Tragen Sie den Namen der Datenbank, die Sie kopie-ren wollen, ein und klicken Sie auf Erzeugen.

Abbildung 1.14: Neue Datenbank erzeugen

6 Sie befinden sich jetzt auf der Verwaltungsseite der neu angelegten Datenbank. Dort finden Sie die Funktion, um SQL Befehle aus einer Datei auszuführen. Kli-

PROF

ITIP

P

Sollte Ihr Hoster wider Erwarten kein phpMyAdmin anbieten, musser eine Alternative anbieten, wie Sie Daten übertragen können. Ent-sprechende Informationen wird er Ihnen bereitstellen.

2-6496.book Page 27 Tuesday, November 19, 2002 3:47 PM

Page 28: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

28

Der dynamische Dreikampf: PHPTriad

cken Sie auf Durchsuchen, um die Datei auf Ihrer Festplatte auszuwählen, die Sie in Schritt 3 gespeichert haben. Bestätigen Sie anschließend Ihre Auswahl mit OK.

Abbildung 1.15: SQL-Befehle aus Datei ausführen

7 Je nach Umfang der Daten müssen Sie einen Augenblick warten. Sie sollten dann aber die Rückmeldung erhalten, dass die Befehle erfolgreich ausgeführt und der Inhalt der Datei eingefügt wurde. Überprüfen Sie, ob die Datenbank korrekt kopiert wurde.

Das war’s, jetzt sollte Ihre dynamische Website im Internet genauso funktionieren wiezu Hause auf Ihrem Testsystem.

1.5 Für NeugierigeSie fühlen sich angesprochen? Gut, denn in diesem Abschnitt bekommen Sie ein paarHintergrundinformationen zu PHP und MySQL, die Sie zur weiteren Lektüre desBuches nicht unbedingt brauchen. Trotzdem ist es interessant zu erfahren, was zumBeispiel die Abkürzung PHP bedeutet oder warum MySQL so erfolgreich ist.

Ein paar Details zu PHPPHP steht für PHP: Hypertext Preprocessor Der Name deutet schon an, dass PHP eineSkriptsprache zur Programmierung von dynamischen Webseiten ist. PHP ist dabei be-sonders aufgrund zweier Eigenschaften interessant.

PROF

ITIP

P Wenden Sie sich bei Problemen mit phpMyAdmin, MySQL oder PHPan den Support Ihres Hosters. Oftmals gibt es auch eine Webseite, dieimmer wieder auftauchende Probleme und deren Lösungen beschreibt,so genannte FAQs (Frequently asked questions – häufig gestellte Fragen).

2-6496.book Page 28 Tuesday, November 19, 2002 3:47 PM

Page 29: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Für Neugierige

29

■ Das Programm ist kostenlos als Open-Source-Projekt erhältlich. Beim Einsatzvon PHP müssen Sie keinerlei Lizenzgebühren bezahlen. Außerdem können Sieden gesamten Quellcode bekommen; eigene Änderungen sind also theoretischbei entsprechendem Fachwissen möglich, dann sollte man sich aber der Entwick-lergemeinde im Internet anschliessen.

■ Aufgrund der großen Entwicklergemeinde von PHP existiert bereits eine großeZahl an kostenlos verfügbaren Erweiterungen und Applikationen. Besonders her-vorzuheben sind hier die Funktionen zum Zugriff auf zahlreiche Datenbanksys-teme. Aber auch für andere Bereiche finden sich viele fertige Produkte, die Siezum Teil in den nächsten Kapiteln vorgestellt bekommen.

Die freie Verfügbarkeit von PHP und Erweiterungen zu PHP sowie die Einfachheit derSprache haben in den letzten Jahren zu einer rasanten Verbreitung geführt (Abbildung1.16). So ist PHP laut Netcraft-Statistik im Juli 2002 auf 1,2 Millionen Webservern und9,3 Millionen Domains im Einsatz.

Abbildung 1.16: Verbreitung von PHP

Interessant ist auch die so genannte Marktdurchdringung, also wie häufig PHP im Ge-gensatz zu Konkurrenzprodukten verwendet wird (Abbildung 1.17).

Abbildung 1.17: PHP-Marktdurchdringung

2-6496.book Page 29 Tuesday, November 19, 2002 3:47 PM

Page 30: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

30

Der dynamische Dreikampf: PHPTriad

Mehr Statistiken und Informationen finden Sie unter:

■ http://www.netcraft.com

■ http://www.securityspace.com/s_survey

Die Zukunft von MySQLMySQL wird zurzeit in Version 3.23 angeboten. Es gibt viele Gründe, warum manMySQL in dieser Version einsetzt:

■ Es ist Open-Source-Software, das heißt, der Quellcode ist einsehbar und es fallenkeine Lizenzgebühren an. Im Vergleich dazu kann eine Lizenz für das Daten-banksystem Oracle bis zu 50.000 € kosten.

■ MySQL ist sehr schnell, besonders im webbasierten Einsatz. Im Vergleich zuanderen kommerziellen Datenbanksystemen wie Oracle braucht es sich nicht zuverstecken.

■ MySQL gibt es für eine Vielzahl von Betriebsystemen, z.B. Linux, Windows,FreeBSD, Solaris oder OS/2.

■ Es arbeitet hervorragend mit PHP zusammen und ist zu einem De-facto-Stan-dard für webbasierten Datenbankzugriff mit PHP geworden.

Man darf allerdings nicht die Nachteile verschweigen:

■ MySQL unterstützt von Haus aus keine Transaktionen, man muss Zusatztoolsdafür benutzen. Transaktionen werden benötigt, damit Daten bei fehlerhaftenOperationen nicht verloren gehen.

■ Wenn ein Benutzer auf eine Tabelle zugreift, wird diese für alle anderen Benutzergesperrt. Bei hohen Zugriffszahlen leidet so die Geschwindigkeit, da viel Zeit mitWarterei vertan wird. Andere Datenbanksysteme arbeiten feiner, dort ist es mög-lich, nur Tabellenzeilen zu sperren.

■ MySQL bietet keine grafische Umgebung zum Bedienen und Administrieren derDatenbank. Aber wie Sie schon gesehen haben und noch sehen werden, wird die-ser Nachteil durch das hervorragende Tool phpMyAdmin relativiert.

Die Entwicklergemeinde von MySQL hat sich zum Ziel gesetzt, die beste Datenbankkostenlos anzubieten. Deshalb hat man für die neue Version 4, die schon zum Down-load bereitsteht, die größten Nachteile aus dem Weg geräumt. MySQL 4.0 bietetTransaktionsmanagement und zeilenweises Sperren. Damit dürfte MySQL 4.0 derteuren Konkurrenz das Fürchten lehren.

2-6496.book Page 30 Tuesday, November 19, 2002 3:47 PM

Page 31: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Workshop 2

Sherlock Holmes und Dr. PHP

Wie Ihnen PHP-Scripts helfen, nützliche Informationen zu gewinnen.

In diesen und den restlichen Kapiteln des Buches werden Sie fertige Scripts kennen ler-nen, die die Fähigkeiten von PHP und MySQL nutzen. Alle Scripts sind Freeware, dasheißt, sie können Sie kostenfrei benutzen. Ist das nicht wunderbar? Willkommen inder Welt von Open-Source-Software! Als Einstieg möchte ich Ihnen zwei Scripts vor-stellen, die Informationen über die Besucher Ihrer Homepage herausfinden. Mithilfedes ersten Scripts mit Namen xCount können Sie einen Seitenzähler in Ihre Homepageeinbauen. Das zweite Script trägt den Namen CounterCaffe und kann schon etwasmehr. Es zeigt komplette Statistiken, wer wann welche Seite wie oft aufgerufen hat. BigBrother is watching you!

2-6496.book Page 31 Tuesday, November 19, 2002 3:47 PM

Page 32: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

32

Sherlock Holmes und Dr. PHP

Ergebnis dieses WorkshopsAls Ergebnis dieses Workshops erhalten Sie zweierlei: erstens die Möglichkeit, einengrafischen Seitenzähler auf beleibige Seiten einzubauen und zweitens eine umfassendeStatistik über die Nutzung Ihrer Website.

2.1 Ein einfacher SeitenzählerWir beginnen ganz einfach – mit einem Seitenzähler. Das haben Sie sicher schon aufvielen Seiten gesehen. Oftmals sieht der Zähler aus wie ein Tachometer und zeigt an,wie viele Besucher diese Seite schon hatte.

Damit auch Sie in den Genuss eines solchen Zählers kommen können, müssen Sie zu-nächst das Script, das Sie schon fertig geliefert bekommen, installieren. Für das Scriptnamens xCount – wie für alle weiteren Scripts im Buch – müssen zwei verschiedene In-stallationen unterschieden werden: Die Installation auf Ihrem lokalen Testsystem mitPHPTriad und die Installation auf Ihrem Webspace im Internet. Die Installation aufdem Webspace gestaltet sich als schwieriger, da man die Dateien zunächst über einFTP-Programm übertragen muss und es mehr Fehlerquellen gibt. Außerdem hat manmeistens auf die Konfiguration von PHP und MySQL keinen Einfluss. Ein paar Fall-stricke können Sie im Anhang über Troubleshooting nachlesen.

2-6496.book Page 32 Tuesday, November 19, 2002 3:47 PM

Page 33: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Ein einfacher Seitenzähler

33

Die InstallationIch stelle Ihnen exemplarisch beide Installationen vor, damit Sie sich ein Bild von denUnterschieden machen können.

Zuerst die Installation auf Ihrem lokalen Testsystem:

1 Legen Sie einen Unterordner namens counter im Dokumentenordner Ihres Web-servers an. Im Fall des Testsystems mit PHPTriad ist das c:\apache\htdocs.

2 Extrahieren Sie die Datei xCount.zip in das neu angelegte Verzeichnis. Die Ord-nerstruktur sollte dann wie in Abbildung 2.1 aussehen.

Abbildung 2.1: Die xCount-Dateien

Das war’s schon. Um die Funktionalität zu testen, probieren Sie die enthaltene Test-datei sample.php aus, die den Zähler integriert hat. Öffnen Sie dazu einen Browser wieden Internet Explorer und wechseln Sie zur URL http://localhost/counter/sample.php.

CD-R

OMAU

F DE

R

Die notwendige Archivdatei finden Sie auf der CD-ROM im Ver-zeichnis \software\xCount. Sie hat den Namen xCount.zip.

Im Internet finden Sie die aktuelle Version unter http://www.x-gfx.de.

2-6496.book Page 33 Tuesday, November 19, 2002 3:47 PM

Page 34: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

34

Sherlock Holmes und Dr. PHP

Wenn Sie eine Seite wie in Abbildung 2.2 sehen, ist das die halbe Miete. Um die volleFunktionalität zu testen, klicken Sie auf den Link Refresh/Count. Der Zähler sollte proKlick eins hochzählen.

Abbildung 2.2: Eine Testseite

Und nun die Installation auf Ihrem Webspace:

1 Erstellen Sie ein temporäres Verzeichnis auf Ihrer Festplatte, zum Beispiel c:\temp\counter.

2 Extrahieren Sie die Archivdatei xCount.zip in dieses Verzeichnis.

3 Benutzen Sie das in Kapitel 1 vorgestellte FTP-Programm SmartFTP, um das komplette Verzeichnis counter auf Ihren Webspace zu übertragen.

4 Achten Sie darauf, dass die Datei counter.dat zum Schreiben freigegeben ist. Klicken Sie dazu im SmartFTP-Fenster mit der rechten Maustaste auf die Datei counter.dat und wählen aus dem Kontextmenü den Eintrag Properties/CHMOD. Stellen Sie die Schreibrechte analog zu Abbildung 2.3 ein.

2-6496.book Page 34 Tuesday, November 19, 2002 3:47 PM

Page 35: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Ein einfacher Seitenzähler

35

Abbildung 2.3: Dateirechte ändern

Jetzt sollte es auch auf Ihrem Webspace funktionieren. Probieren Sie wieder die Test-seite sample.php, indem Sie mit einem Browser zur URL http://meinWebspace.de/coun-ter/sample.php wechseln. meinWebspace.de ersetzen Sie natürlich mit dem NamenIhrer Domain.

Einbau des ZählersDass die Testseite funktioniert ist zwar schön, aber wir wollen den Zähler natürlich aufeigenen Seiten benutzen. Wie das geht, erfahren Sie in diesem Abschnitt.

Lassen Sie uns dazu eine einfache HTML-Seite schreiben, die wir dann mit dem Zählerbestücken.

Der Code der Seite ist:

<html><h1>Testseite</h1></html>

Speichern Sie die Seite unter dem Namen Testseite.php in Ihrem counter-Verzeichnis ab.

2-6496.book Page 35 Tuesday, November 19, 2002 3:47 PM

Page 36: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

36

Sherlock Holmes und Dr. PHP

Um nun den Zähler einzubauen, fügen Sie folgenden Code in Zeile 3 ein:

<? include("counter.php"); echo $cnt_output; ?>

Der gesamte Code lautet dann also:

<html><h1>Testseite</h1><? include("counter.php"); echo $cnt_output; ?></html>

Das Ergebnis sehen Sie in Abbildung 2.4.

Abbildung 2.4: Zähler auf eigener Seite

PROF

ITIP

P Die Datei hat die Endung .php, da der Zähler, den wir später einbauenwollen, ein PHP-Script ist. Damit PHP-Scripts vom Webserver alssolche erkannt werden, müssen Sie die entsprechende Endung –nämlich .php – haben.

VORS

ICHT

!

Falls die Seite, in die Sie den Zähler einbauen, nicht im gleichen Ver-zeichnis liegt wie das counter-Script, müssen Sie die include-Anwei-sung modifizieren. Als Parameter bekommt die include-Anweisungden Ort des counter-Scripts. Nehmen wir einmal an, Sie wollen denZähler in eine Seite einbauen, die in einem Verzeichnis beliebigenNamens in Ihrem Dokumentenverzeichnis des Webservers liegt.Dann müsste die include-Anweisung lauten: include("../counter/counter.php").

2-6496.book Page 36 Tuesday, November 19, 2002 3:47 PM

Page 37: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Ein einfacher Seitenzähler

37

Ihnen ist bestimmt schon aufgefallen, dass der Zähler nicht bei 0 anfängt. Das könnenwir schnell beheben. Öffnen Sie die Datei counter.dat im counter-Installationsverzeich-nis mit Hilfe eines Texteditors. In dieser Datei wird die Anzahl der Zugriffe gespei-chert. Ändern Sie die Zahl einfach ab und speichern Sie die Datei.

KosmetikIch weiß nicht, wie es Ihnen geht, aber ich finde die mitgelieferten Grafiken für denZähler nicht besonders gut lesbar. Zum Glück kann man hier eigene Grafiken einbin-den. Schauen Sie einmal in den Ordner img im counter-Installationsverzeichnis. Dortexistiert für jede Zahl eine eigene Grafik, die Sie auch ändern können.

Nun ist es relativ viel Arbeit, eigene Ziffern für den Zähler zu entwerfen. Aber es habensich schon viele andere die Arbeit gemacht und waren so nett, die Ergebnisse im Inter-net frei bereitzustellen.

Eine große Sammlung von Zählerziffern bekommen Sie auf der Seite http://www.coun-terart.com. Wählen Sie einfach die gewünschte Rubrik und klicken Sie dann auf einenZähler, der Ihnen gefällt. Auf der Download-Seite wählen Sie dann das Zip-Archiv(Abbildung 2.5).

Abbildung 2.5: Download eines Ziffernsets

2-6496.book Page 37 Tuesday, November 19, 2002 3:47 PM

Page 38: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

38

Sherlock Holmes und Dr. PHP

Damit Sie die neuen Ziffern benutzen können, gehen sie folgendermaßen vor:

1 Legen Sie einen neuen Ordner für die Ziffern im counter-Installationsverzeichnis an, zum Beispiel mit dem Namen meineZiffern.

2 Extrahieren Sie das heruntergeladene Archiv in das neue Verzeichnis meineZiffern.

3 Ändern Sie die Dateinamen der Ziffern um, wie in Abbildung 2.6 gezeigt.

Abbildung 2.6: Ändern der Dateinamen

4 Öffnen Sie die Datei counter.php in einem Texteditor and ändern Sie den Eintrag in Zeile 46 um in:

$img_url = "./meineZiffern";

PROF

ITIP

P Falls Sie keinen Texteditor besitzen, können sie den auf der CD-ROMmitgelieferten Textpad oder JEdit installieren. Sie finden die Pro-gramme im Verzeichnis \software\Texteditoren. Für JEdit benötigenSie allerdings eine Java-Laufzeitumgebung (erhältlich bei http://java.sun.com), dafür kann er wesentlich mehr als Textpad.

2-6496.book Page 38 Tuesday, November 19, 2002 3:47 PM

Page 39: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Besucherstatistiken

39

5 Speichern Sie die Datei und testen Sie Ihre neuen Ziffern mit der Testseite (Abbildung 2.7).

Abbildung 2.7: Die neuen Ziffern

2.2 BesucherstatistikenDa Sie das erste Unterkapitel unbeschadet überstanden haben – schließlich lesen Sieweiter –, erhöhen wir den Schwierigkeitsgrad ein wenig. In diesem Unterkapitel möch-te ich Ihnen ein Script vorstellen, das mithilfe von PHP und der MySQL-Datenbankeine Besucherstatistik erstellt. Folgende Informationen werden dabei bereitgestellt:

■ Welche Seiten wurden aufgerufen?

■ Wie oft wurde eine Seite aufgerufen?

■ Von welchem Rechner wurden Seiten aufgerufen?

■ Welcher Browser und welches Betriebssystem wurden auf den Besucherrechnernbenutzt ?

Vielleicht fragen Sie sich, woher alle diese Informationen kommen? Die Antwort ist,dass sie standardmäßig vom Browser bei jedem Seitenaufruf an den Webserver gesen-det werden. Das heißt, die Informationen sind immer da, ein Script muss Sie nurentsprechend auslesen und auswerten. Genau das erledigt das Script mit dem NamenCounterCaffe.

CD-R

OMAU

F DE

R

CounterCaffe finden Sie auf der CD-ROM im Verzeichnis \software\CounterCaffe. Die Archivdatei nennt sich CounterCaffe1.1.zip.

Im Internet finden Sie die aktuelle Version unter http://counter.gonafish.com

2-6496.book Page 39 Tuesday, November 19, 2002 3:47 PM

Page 40: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

40

Sherlock Holmes und Dr. PHP

Die Installation von CounterCaffeUm CounterCaffe zu installieren, gehen Sie folgendermaßen vor:

1 Legen Sie ein neues Verzeichnis namens statistik im Dokumentenordner des Webservers an (c:\apache\htdocs) an.

2 Extrahieren Sie die Archivdatei CounterCaffe1.1.zip in das neue Verzeichnis.

3 Öffnen Sie die Datei param.inc.php in einem Texteditor wie Textpad.

4 Ändern Sie die Einstellungen ab wie in Abbildung 2.8 gezeigt.

Abbildung 2.8: Konfiguration von CounterCaffe

Die ersten vier Parameter sind die Datenbankeinstellungen. Wir haben als Datenbank-benutzer donald angegeben und als Datenbankname db1. Woher kommen diese Werte?Um ehrlich zu sein, es gibt sie noch gar nicht. Wir müssen den neuen Datenbankbenut-zer und die Datenbank db1 erst noch erstellen.

Dazu gehen Sie wie folgt vor:

1 Öffnen Sie einen Browser und wechseln Sie zur MySQL-Administrationsseite: http://localhost/phpmyadmin.

2 Klicken Sie auf den Link Benutzer (ganz unten).

2-6496.book Page 40 Tuesday, November 19, 2002 3:47 PM

Page 41: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Besucherstatistiken

41

3 Scrollen Sie etwas nach unten bis zur Rubrik Neuen Benutzer hinzufügen und geben Sie als Name und Passwort donald an (Abbildung 2.9). Klicken Sie außer-dem auf den Link Alle auswählen in der Rubrik Rechte.

Abbildung 2.9: Neuen Benutzer anlegen

4 Bestätigen Sie Ihre Eingaben mit Klick auf die Schaltfläche OK. Damit ist der neue Benutzer donald erstellt.

5 Kehren Sie zurück zur Startseite durch Klick auf den Link Home im linken Menü ganz oben.

PROF

ITIP

P In der MySQL-Datenbank Ihres Webspaces können sie diese Proze-dur vermutlich nicht ausführen, da Ihnen dazu die Rechte fehlen. Siehaben aber wahrscheinlich eine MySQL-Benutzerkennung von IhremHoster erhalten. Benutzen Sie einfach diese Kennung anstatt donald.

2-6496.book Page 41 Tuesday, November 19, 2002 3:47 PM

Page 42: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

42

Sherlock Holmes und Dr. PHP

6 Geben Sie in das Textfeld unter der Rubrik Neue Datenbank erzeugen den Text db1 ein und klicken Sie auf die Schaltfläche Erzeugen, um die neue Datenbank zu erstellen (Abbildung 2.10).

Abbildung 2.10: Neue Datenbank erzeugen

Nach dieser notwendigen Vorarbeit können wir jetzt die Installation von CounterCaffeabschließen:

1 Wechseln Sie zur URL http://localhost/statistik/.

2 Loggen Sie sich mit der in der Datei param.inc.php eingestellten Administrator-Kennung goofy, Passwort auch goofy, ein (Abbildung 2.11). Der Zugang zur Sta-tistikseite ist geschützt, damit nicht jeder beliebige Internetsurfer Ihre Statistiken ansehen kann.

2-6496.book Page 42 Tuesday, November 19, 2002 3:47 PM

Page 43: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Besucherstatistiken

43

Abbildung 2.11: CounterCaffe-Login

3 Klicken Sie auf den Link Create Table im oberen rechten Menü. Sie bekommen eine Bestätigung, dass die notwendigen Datenbanktabellen erzeugt wurden (Abbildung 2.12).

Abbildung 2.12: Datenanktabellen erstellen

Damit ist CounterCaffe einsatzbereit. Die Spannung steigt...

2-6496.book Page 43 Tuesday, November 19, 2002 3:47 PM

Page 44: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

44

Sherlock Holmes und Dr. PHP

Erstellen von StatistikenJede Seite Ihrer Homepage, für die eine Statistik geführt werden soll, muss folgendenEintrag am Ende der Datei haben:

<img src="http://localhost/statistik/counter.php" width="1"height="1">

Als Quelle des Bildes müssen Sie die URL zu einer CounterCaffe-Scriptdatei namenscounter.php angeben (hier http:// localhost/statistik/counter.php).

Lassen Sie uns eine Testseite erstellen, die die Funktionalität von CounterCaffe demons-triert:

1 Legen Sie im Dokumentenverzeichnis Ihres Webservers (c:\apache\htdocs) einen neuen Ordner namens homepage an. Hier wollen wir die Testdatei speichern.

2 Schreiben Sie eine Testdatei mit folgenden einfachen HTML-Code:

<html><h1>Testseite</h1></html>

3 Damit eine Statistik für diese Seite geführt wird, fügen Sie den notwendigen Code hinzu:

<html><h1>Testseite</h1><img src="http://localhost/statistik/counter.php" width="1" height="1"></html>

4 Speichern Sie die Datei im Ordner homepage.

PROF

ITIP

P

CounterCaffe benutzt einen Trick, um die Statistiken zu erzeugen.Normalerweise wird jedes Bild einer Internetseite einzeln vom Web-server angefordert. Es ist also nicht Bestandteil des Seitentextes. Jetztwird im oben stehenden Code aber als Quelle des Bildes keine Bild-datei, sondern ein PHP-Script angegeben. Für den Webserver bedeu-tet das, dass er die Scriptdatei ausführt und somit werden dienotwendigen Daten für die Statistik in die Datenbank übernommen.

2-6496.book Page 44 Tuesday, November 19, 2002 3:47 PM

Page 45: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Besucherstatistiken

45

5 Öffnen Sie einen Browser und schauen Sie sich die HTML-Datei an: http://local-host/homepage/Testseite.html.

6 Öffnen Sie eine andere Browserinstanz und wechseln Sie zur URL von Counter-Caffe: http://localhost/statistik/. Loggen Sie sich wieder mit goofy ein. Sie sollten jetzt Statistikdaten sehen (Abbildung 2.13).

Abbildung 2.13: Statistik

Unter der Rubrik Referer sehen sie die Seiten, die bisher aufgerufen wurden, und dieAnzahl der Aufrufe. In der Rubrik Host sehen Sie die IP-Adressen bzw. Namen derRechner (Hosts), die Seiten aufgerufen haben, sowie deren Browser und Betriebssys-tem. Im Beispiel ist das MSE 5 (Microsoft Internet Explorer Version 5) und WindowsNT 5 (Synonym für Windows 2000).

Greifen Sie erneut auf die Seite zu. Sie werden sehen, wie sich die Statistik entspre-chend ändert. Vielleicht haben Sie ja auch die Möglichkeit, über einen anderen Rech-ner auf die Testseite zuzugreifen, um einen weiteren Eintrag in der Host-Rubrik zubekommen.

VORS

ICHT

! Das Statistik-Script ist so ausgelegt, dass es nur Hosts zählt, die einenNamen haben. Besser wäre es allerdings, wenn auch Hosts gezählt wür-den, die nur IP-Adressen haben. Um das zu erreichen, müssen Sie dasScript ein wenig abändern. Öffnen Sie dazu die Datei counter.php ineinem Editor und fügen Sie folgenden Code in Zeile 19 ein:

if ($REMOTE_HOST == "") {$REMOTE_HOST = $REMOTE_ADDR;}

2-6496.book Page 45 Tuesday, November 19, 2002 3:47 PM

Page 46: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

46

Sherlock Holmes und Dr. PHP

Über den Link Report in der oberen rechten Menüleiste können sie einen zum Ausdru-cken geeigneten Bericht erstellen lassen (Abbildung 2.14).

Abbildung 2.14: Bericht ansehen

Jetzt müssen Sie nur noch den Code zum Aktivieren der Statistikfunktion in alle Seiteneinfügen, die Sie in die Statistik mit aufnehmen wollen.

Ich wünsche Ihnen zahlreiche Besucher und damit auch zahlreiche Einträge in derStatistikdatenbank!

2-6496.book Page 46 Tuesday, November 19, 2002 3:47 PM

Page 47: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Besucherstatistiken

47

Ergebnis dieses WorkshopsSie haben in diesem Workshop gelernt, wie Sie einen einfachen grafischen Seitenzählerin Ihre Seiten einbauen können. Des weiteren haben sie das Skript CounterCaffe ken-nen gelernt, dass es Ihnen ermöglicht, Berichte über die Nutzung Ihrer Website zuerstellen.

2-6496.book Page 47 Tuesday, November 19, 2002 3:47 PM

Page 48: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

2-6496.book Page 48 Tuesday, November 19, 2002 3:47 PM

Page 49: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Workshop 3

Beehren Sie uns bald wiederWie Sie mit einem Gästebuch in Kontakt mit den Besuchern Ihrer Seite kommen

Gästebücher werten eine Seite auf. Besucher können Ihre Meinung zur Website loswer-den und Sie erhalten so wertvolles Feedback. Außerdem gibt ein Gästebuch einer Web-site einen persönlichen Touch. In diesem Kapitel werde ich Ihnen ein Gästebuch aufPHP-Basis vorstellen, das seine Einträge in einer MySQL-Datenbank speichert. Es ist fürnicht-kommerzielle Zwecke kostenlos und nennt sich einfach nur pgb (php Gästebuch).

Ergebnis dieses WorkshopsAls Ergebnis erhalten Sie ein komfortables Gästebuch mit vielen Funktionen, dass andas Design Ihrer Homepage angepasst ist.

2-6496.book Page 49 Tuesday, November 19, 2002 3:47 PM

Page 50: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

50

Beehren Sie uns bald wieder

3.1 InstallationIch erläutere Ihnen die Installation zunächst für das lokale Testsystem mit PHPTriadund dann für Ihren Webspace im Internet. In den folgenden Kapiteln werde ich dieInstallation auf Ihrem Webspace nicht mehr erläutern, der prinzipielle Mechanismusist immer der gleiche.

Zunächst widmen wir uns der Installation auf Ihrem lokalen Rechner:

1 Entpacken Sie die Archivdatei in das Dokumentenverzeichnis Ihres Webservers. Falls Sie PHPTriad benutzen, lautet der Pfad c:\apache\htdocs.

Das war’s schon.

Jetzt die Installation auf Ihrem Webspace:

1 Erstellen sie auf ihrem Webserver ein beliebiges Verzeichnis, in dem sie das Gäste-buch betreiben wollen.

2 Entpacken sie alle Dateien aus der .zip-Datei und übertragen diese mit ihrem FTP-Programm in dieses Verzeichnis auf den Webserver.

Damit ist die Installation beendet.

Jetzt muss pgb noch an Ihre Gegebenheiten angepasst werden. Öffnen sie dazu in ei-nem Texteditor die Datei config.inc.php im Installationsverzeichnis.

In der Datei config.inc.php finden sie alle relevanten Parameter, um das Gästebuch anihre MySQL-Datenbank anzubinden und einzustellen. Beachten Sie, dass alle Werte in"" eingeschlossen sind und am Ende der Zeile ein Semikolon steht. In der nachfolgen-den Tabelle finden Sie einige wichtige Parameter.

VORS

ICHT

!

Stellen Sie sicher, dass die Bilder (.gif) im Binärmodus übertragenwerden. Bei Webservern auf Linux/Unix-Basis achten Sie auf die kor-rekte Groß-/Kleinschreibung der Files.

Parameter Beschreibung

$database Name Ihrer Datenbank auf dem MySQL-Server

$sqlhost Hostname, auf dem die MySQL-Datenbank läuft. Meistens : "localhost"

$sqluser Username für die Datenbank

$sqlpass Passwort für die Datenbank

2-6496.book Page 50 Tuesday, November 19, 2002 3:47 PM

Page 51: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Installation

51

Tragen Sie für Ihr lokales Testsystem die Werte analog zu Abbildung 3.1 ein und spei-chern Sie die Datei.

Abbildung 3.1: Anpassen der pgb-Konfiguration

$tab_data Tabellenname für die Einträge (SQL-fähiger Name!)

$tab_kom Tabellenname für die Kommentare (SQL-fähiger Name!)

$adminpass Passwort zum Löschen von Einträgen

$adminemail E-Mail-Adresse des Administrators, an die bei $notify=1 die neuen Einträge geschickt werden

$notify Wenn $notify = 1 werden neue Einträge via E-Mail an den Admin verschickt.

$time_offset Zur Anpassung an verschiedene Zeitzonen; 3600 pro Stunde

$glowstyle Dieses Tag ermöglicht es, das Glühen des Autornamens anzupassen

Parameter Beschreibung

2-6496.book Page 51 Tuesday, November 19, 2002 3:47 PM

Page 52: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

52

Beehren Sie uns bald wieder

Nach der Anpassung der Parameter $database, $sqlhost, $sqluser und $sql-pass haben Sie bereits Zugang zur Datenbank.

Die Tabellennamen $tab_data und $tab_kom müssen nicht geändert werden. Diesebieten aber die Möglichkeit, auf einer Datenbank zwei verschiedene Gästebücher zuinstallieren, indem man die Tabellennamen einfach entsprechend ändert.

Bei $adminemail tragen sie Ihre E-Mail-Adresse ein, an die Benachrichtigungen überneue Gästebucheinträge geschickt werden, wenn $notify auf 1 steht.

$time_offset gibt den Zeitunterschied des Gästebuchs zur Serverzeit an. Somit kannman das Gästebuch genau an eine Zeitzone anpassen. Der Wert gibt den Unterschiedin Sekunden an. +3600 steht für +1 Stunde, -3600 steht für -1 Stunde.

Die benötigten Datenbanktabellen für das Gästebuch erstellen sie automatisch mitdem mitgelieferten Script pgb_createdb.php:

Öffnen Sie einen Browser und wechseln Sie zur URL http://localhost/gb/pgb_crea-tedb.php. Die Datenbanktabellen werden nun erstellt. Beachten sie, dass die Datenbankdb1 und der Benutzer donald existieren müssen (wurde in Kapitel 2 erstellt).

Abbildung 3.2: Skript zum Anlegen der Datenbanktabellen

VORS

ICHT

!

Unterstützt der Webserver kein Versenden von E-Mails, muss dieseOption auf 0 stehen, ansonsten erscheint beim Eintragen ins Gäste-buch eine Fehlermeldung.

2-6496.book Page 52 Tuesday, November 19, 2002 3:47 PM

Page 53: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Handhabung

53

Nun ist es Zeit für einen ersten Test des Gästebuchs. Klicken Sie auf den Link Start, umauf die Startseite des zurzeit noch leeren Gästebuchs zu kommen. Wenn alles funktio-niert hat, sieht das wie in Abbildung 3.3 aus.

Abbildung 3.3: Die Startseite

3.2 HandhabungSo, dann wollen wir mal einen ersten Eintrag einfügen. Auf der Startseite finden Siedazu die Rubrik Eintrag hinzufügen . Füllen Sie die Felder analog zu Abbildung 3.4 undklicken Sie auf die Schaltfläche Eintragen.

2-6496.book Page 53 Tuesday, November 19, 2002 3:47 PM

Page 54: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

54

Beehren Sie uns bald wieder

Abbildung 3.4: Eintrag erstellen

Es erscheint eine Bestätigungsmeldung. Klicken Sie auf den Link Zurück , um wiederzur Startseite zu gelangen. Der neue Beitrag erscheint dort (Abbildung 3.5).

Abbildung 3.5: Der neue Eintrag

2-6496.book Page 54 Tuesday, November 19, 2002 3:47 PM

Page 55: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Handhabung

55

Zu jedem Eintrag können alle Benutzer Kommentare abgeben. Klicken Sie dazu aufden Link Kommentare unterhalb des Autornamens. Tragen Sie etwas ein und spei-chern Sie Ihre Eingabe durch Klick auf die Schaltfläche Kommentar Abschicken.

Abbildung 3.6: Kommentar abgeben

Ihr Kommentar wird jetzt angezeigt. Sie befinden sich immer noch auf der Kommen-tarseite. Um zurück zur Hauptseite des Gästebuchs zu gelangen, benutzen Sie den LinkZurück ins Gästebuch am Ende der Seite. Dort werden Kommentare nicht direkt ange-zeigt, aber die Anzahl der Kommentare zu einem Beitrag.

Wenn das Gästebuch sehr viele Beiträge umfasst, kann es nützlich sein, die Suchfunk-tion zu benutzen. Man kann damit nach Autoren suchen, wobei man nicht den voll-ständigen Namen kennen muss, sondern auch nur nach einzelnen Buchstaben oderSilben, die an beliebiger Stelle im Namen auftauchen, suchen lassen kann. Es werdendann alle Beiträge der Autoren angezeigt, die diesem Suchkriterium entsprechen. InAbbildung 3.7 sehen Sie, dass ich als Suchkriterium nur den Vornamen des Autors ein-geben habe. Es würden alle Beiträge der Autoren, in deren Namen Arnold vorkommt,angezeigt.

2-6496.book Page 55 Tuesday, November 19, 2002 3:47 PM

Page 56: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

56

Beehren Sie uns bald wieder

Abbildung 3.7: Die Suchfunktion

3.3 AdministrationEs kann vorkommen, dass ein Surfer irgendwelchen Müll in das Gästebuch schreibt.Als normaler Benutzer können Sie nichts dagegen unternehmen und auch den Eintragnicht löschen. Aber es gibt einen speziellen Benutzer: den Verwalter des Gästebuchs.Er wird Admin-User, Administrator oder einfach nur Admin genannt. Um sich alsAdmin einzuloggen, klicken Sie auf den Link Admin am Anfang der Seite. Loggen Siesich mit dem Usernamen admin und Passwort admin ein und sie gelangen zur Admi-nistrationsseite (Abbildung 3.8).

Abbildung 3.8:Die Administrationsseite

2-6496.book Page 56 Tuesday, November 19, 2002 3:47 PM

Page 57: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Administration

57

Auf der Administrationsseite bekommen Sie alle Einträge des Gästebuchs in verkürzterForm übersichtlich angezeigt. Unter der Spalte Edit finden Sie drei Schaltflächen:

■ die erste zum Bearbeiten des Eintrags

■ die zweite zum Löschen

■ und die dritte, um den Beitrag als wichtigen Eintrag (VIP – very important person)zu markieren.

Abbildung 3.9: Eintrag bearbeiten

VORS

ICHT

!Sie sollten das Passwort des Admin-Users verändern, da jeder, derpgb kennt, ebenfalls die Standardeinstellung (User: admin, Passwort:admin) kennt und so in Ihrem Gästebuch Änderungen vornehmenkann. Um das Benutzerkonto zu verändern, klicken Sie auf den LinkAdmin in der oberen Menüzeile. Geben Sie auf der dann angezeigtenSeite ein neues Passwort an und klicken Sie auf die Schaltfläche Bear-beiten. Merken Sie sich das neue Passwort gut!

2-6496.book Page 57 Tuesday, November 19, 2002 3:47 PM

Page 58: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

58

Beehren Sie uns bald wieder

Sie haben somit die Kontrolle über den Inhalt Ihres Gästebuchs. In Abbildung 3.9 wirddie Seite dargestellt, die erscheint, wenn Sie die Bearbeiten-Schaltfläche anklicken. Siekönnen alles verändern, sogar den Autornamen.

3.4 Anpassen von Layout und DesignDamit sich das Gästebuch nahtlos in Ihre eigene Homepage einfügt, sollte es vom De-sign an Ihre Homepage angepasst werden. Dies ist zum Glück möglich. Sie müssen al-lerdings Kenntnisse in HTML und optimalerweise auch in CSS (Cascading StyleSheets) mitbringen, um diese Möglichkeit effizient nutzen zu können. Aber vielleichthelfen Ihnen auch ohne Vorkenntnisse die nachfolgenden Beispiele weiter, die Sie inleicht abgewandelter Form verwenden können.

Zunächst möchte ich Ihnen zeigen, wie Sie den Seitenkopf anpassen können, sodasseine individuelle Überschrift erscheint. Außerdem werden wir die etwas lange Begrü-ßung „Willkommen in meinem Gästebuch, ihr könnt hier ....“ am Beginn der Seiteetwas kürzen.

Die Datei, die dazu geändert werden muss, heißt kopf.php und befindet sich im pgb-Installationsverzeichnis.

Gehen Sie folgendermaßen vor:

1 Öffnen Sie die Datei kopf.php in einem Texteditor wie Textpad.

2 Fügen Sie in Zeile 9 folgenden HTML-Code ein:

<h2>Peters tolle Homepage</h2>

3 Ersetzen Sie die lange Begrüßungsmeldung in Zeile 14 durch eine kürzere (Abbildung 3.10).

4 Speichern Sie die Änderungen.

2-6496.book Page 58 Tuesday, November 19, 2002 3:47 PM

Page 59: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Anpassen von Layout und Design

59

Abbildung 3.10: Änderungen in kopf.php

Die Änderungen bewirken ein Erscheinungsbild wie in Abbildung 3.11.

Abbildung 3.11: Veränderter Seitenkopf

Der nächste wichtige Faktor sind natürlich die Farben. Vielleicht ist Ihre Homepagezufällig in Blautönen gestaltet, sodass das Gästebuch passt. Aber das ist eher unwahr-scheinlich. Schauen wir uns also die Möglichkeit an, wie Sie die Farben, die in demGästebuch benutzt werden, definieren können.

2-6496.book Page 59 Tuesday, November 19, 2002 3:47 PM

Page 60: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

60

Beehren Sie uns bald wieder

Die dazu notwendige Datei lautet default.css und ist das Standard-Stylesheet, das füralle Seiten des Gästebuchs verwendet wird. Die Datei befindet sich ebenfalls im pgb-Installationsverzeichnis.

Wenn Sie CSS nicht kennen, ist das nicht tragisch. Schauen Sie einfach nach Einträgenmit dem Namen color oder background-color und spielen Sie ein bisschen mit verschie-denen Farbwerten. Eine Liste von Farbwerten finden Sie im Anhang.

Ich möchte Ihnen beispielhaft zeigen, wie Sie die Schrift- und Hintergrundfarbe derkompletten Seite sowie die Farben für diverse Tabellenelemente ändern können.

1 Öffnen Sie die Datei default.css in einem Texteditor.

2 Als Erstes wollen wir die Schriftfarbe auf der Seite (nicht in der Tabelle) von zur-zeit Schwarz in Weiß ändern. Ersetzen Sie dazu den Wert von color in Zeile 13 durch #FFFFFF.

3 Da weiße Schrift auf weißem Hintergrund nicht sonderlich gut zu lesen ist, wol-len wir die Farbe des Seitenhintergrunds ändern, und zwar von Weiß auf Schwarz. Ersetzen Sie dafür den Wert von background-color in Zeile 16 durch #000000.

4 Um den Hintergrund der Tabellenzeilen, die als Überschrift dienen, anders ein-zufärben, müssen Sie den Wert von background-color in Zeile 55 ändern, zum Beispiel in #AAAAAA für Grau.

5 Als Letztes ändern Sie die Hintergrundfarbe für die Gästebucheinträge. Ersetzen Sie hierfür den Wert von background-color in Zeile 68 und 69 durch #CCCCCC bzw. #FFFFFF.

6 Speichern Sie die Datei und schauen Sie sich das Ergebnis im Browser an: http://localhost/gb/ (Abbildung 3.12). Zugegeben, wir gewinnen damit keinen Design-Wettbewerb, aber mit etwas Geduld kann man die Farbkombinationen so wäh-len, dass sie zum Gesamt-Farbschema Ihrer Homepage passen.

PROF

ITIP

P

#FFFFFF ist die hexadezimale Codierung für die Farbe Weiß. Viel-leicht ist Ihnen diese Schreibweise schon aus HTML bekannt. ImAnhang finden Sie eine Farbtabelle mit entprechenden Werten.

2-6496.book Page 60 Tuesday, November 19, 2002 3:47 PM

Page 61: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Anpassen von Layout und Design

61

Abbildung 3.12: Veränderte Farben

Eine weitere Scriptdatei, die den Seitenfuß darstellt, nennt sich fuss.php. Auch hierkönnen Sie wie bei der Kopfdatei eigenen HTML-Code unterbringen, um Text oderandere HTML-Elemente einzubinden, die am Ende jeder Seite des Gästebuchs ange-zeigt werden sollen.

In Abbildung 3.13 sehen Sie den HTML-Code, den Sie hinzufügen müssten, um einenLink zu einer E-Mail-Adresse im Fuß jeder Seite anzeigen zu lassen.

Abbildung 3.13: Veränderte Fußdatei

2-6496.book Page 61 Tuesday, November 19, 2002 3:47 PM

Page 62: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

62

Beehren Sie uns bald wieder

Ergebnis dieses WorkshopsIn diesem Workshop haben Sie das kostenlose Skript pgb kennen gelernt, mit dessenHilfe Sie ein Gästebuch in Ihre Homepage integrieren können.

2-6496.book Page 62 Tuesday, November 19, 2002 3:47 PM

Page 63: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Workshop 4

Was mache ich mit all den Daten?Formulardaten prüfen, weitersenden und in der Datenbank ablegen

Eine klassische Anwendung von Scripts seit den Anfängen mit CGI/Perl ist das Weiter-verarbeiten von Formulardaten mit so genannten FormProcessors. Hierfür gibt es eineganze Reihe fertiger anpassbarer Scripts auf PHP-Basis, von denen Sie in diesem Kapiteleinen exzellenten Vertreter dieser Gattung vorgestellt bekommen. Das Script nennt sichPhorm und ist natürlich wieder kostenlos – der Autor bittet aber um eine freiwillige Re-gistrierung für 10 Dollar. Also, wenn Ihnen das Script gefällt und Sie in Geberlaune sind ...

Ergebnis dieses WorkshopsIn diesem Workshop werden Sie ein Beispielformular entwerfen, dessen Daten Sie dannper Email zugeschickt bekommen. Sie werden ausserdem die Daten in eine MySQL-Datenbank ablegen.

2-6496.book Page 63 Tuesday, November 19, 2002 3:47 PM

Page 64: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

64

Was mache ich mit all den Daten?

4.1 Was bietet Phorm?Stellen Sie sich vor, Sie haben ein Feedback-Formular auf Ihrer Homepage, mit demSurfer Ihnen mitteilen können, wie ihnen die Website gefällt. Ein Benutzer füllt dasFormular aus und lobt die Seiten, klickt auf Abschicken und ... was soll mit den Datenpassieren, die der Benutzer eingegeben hat? Vielleicht sollen Sie an Ihre E-Mail-Adressegeschickt werden oder in einer Datenbank gespeichert werden. Genau dies ist mitPhorm möglich. Zusätzlich gibt es folgende Möglichkeiten:

■ Versenden von Daten an mehrere E-Mail-Adressen

■ Überprüfen von Formulardaten auf Richtigkeit und gegebenenfalls Ablehnung

■ Anzeigen einer Bestätigungsseite mit den erhaltenen Daten

■ Versenden einer Bestätigungs-E-Mail an den Sender

Dies alles wäre nur mit viel Programmieraufwand zu realisieren, aber zum Glück gibtes Phorm!

4.2 Vorbereiten des TestsystemsDamit PHP E-Mails verschicken kann, muss es entsprechend konfiguriert sein. AufIhrem Webspace sollte das der Fall sein, ansonsten beschweren Sie sich!

Auf unserem Testsystem, für die meisten Leser PHPTriad unter Windows, müssen SiePHP selbst konfigurieren. Aber das ist nicht schwierig, denn Sie brauchen als Informationlediglich den Namen ihres SMTP-Servers. Der SMTP-Server sorgt dafür, dass IhreE-Mails verschickt werden. Für T-Online-Kunden zum Beispiel heißt er smtp.t-online.de.Sie können den Namen herausfinden, indem Sie in Ihrem E-Mail-Client-Programm (wieOutlook) in die Eigenschaften ihres E-Mail-Kontos schauen. Im Feld Postausgang(SMTP) auf der Registerkarte Server finden Sie die gesuchte Information (Abbildung 4.1).

2-6496.book Page 64 Tuesday, November 19, 2002 3:47 PM

Page 65: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Vorbereiten des Testsystems

65

Abbildung 4.1: E-Mail-Serverinformationen

Gewappnet mit dem Namen des SMTP-Servers können Sie nun PHP konfigurieren.Öffnen Sie dazu die PHP-Konfigurationsdatei php.ini im Verzeichnis c:\apache\php.In Zeile 476 können Sie den Servernamen eintragen und in Zeile 479 die Absender-E-Mail-Adresse (Abbildung 4.2).

Abbildung 4.2: E-Mail-Einstellungen von PHP

Speichern Sie die Datei. Ab sofort kann PHP auch E-Mails verschicken!

2-6496.book Page 65 Tuesday, November 19, 2002 3:47 PM

Page 66: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

66

Was mache ich mit all den Daten?

4.3 Installation von Phorm

Die Installation gestaltet sich unkompliziert:

1 Legen Sie ein neues Unterverzeichnis mit dem Namen Phorm im Dokumenten-verzeichnis Ihres Webservers an. Unter Windows mit PHPTriad ist es das Ver-zeichnis c:\apache\htdocs, bei Linux meist /usr/local/httpd/htdocs.

2 Entpacken Sie das Archiv phorm.zip von der CD-ROM in den neu erstellten Ordner.

3 Öffnen Sie die Datei phormconfig.php3 in einem Texteditor und tragen Sie fol-gende Informationen ein (Abbildung 4.3):

■ Die E-Mail-Adresse, an die Fehlermeldungen von Phorm geschickt werden:$PHORM_ALERTTO = "[email protected]";

■ Die E-Mail-Adresse, an die die Formulardaten geschickt werden soll:$PHORM_TO = "[email protected]";

■ Den Inhalt der Betreffzeile der gesendeten E-Mails:$PHORM_SUBJECT = "Formulardaten";

Abbildung 4.3: Die Konfigurationsdatei

CD-R

OMAU

F DE

R

Phorm finden Sie als Zip-Archiv auf der CD-ROM im Verzeichnis\software\Phorm.

Im Internet finden Sie die aktuelle Version unter http://www.phorm.com.

2-6496.book Page 66 Tuesday, November 19, 2002 3:47 PM

Page 67: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Ein einfaches Beispiel

67

4 Speichern Sie die Datei.

Für eine ganz einfache Formularbehandlung reicht das schon aus, wie Sie im nächstenUnterkapitel anhand eines Beispiels sehen werden. Später werden wir allerdings nochviel mehr machen, es wird also spannend!

4.4 Ein einfaches BeispielNun wollen wir Phorm darauf testen, ob es denn hält, was es verspricht. Dazu müssenwir eine kleine HTML-Testdatei mit einem Formular anlegen (Abbildung 4.4).

Abbildung 4.4: Erstes Testformular

Der Quellcode dazu sieht folgendermaßen aus:

<html> <form method="post" action="/phorm/phorm.php"> Vorname <input type="text" name="Vorname"><br> Alter <input type="text" name="Alter"><br> <input type="submit" value="Los!"> </form></html>

Sie sehen, dass ich im action-Attribut des Formulars die URL des Phorm-Scripts an-gegeben habe. Probieren Sie es aus! Legen Sie eine Datei test.html im Dokumentenver-zeichnis des Webservers (c:\apache\htdocs) an. Rufen Sie die Datei in einem Browserauf, füllen Sie das Formular aus und schicken Sie es ab. Wenn alles funktioniert, be-kommen Sie eine E-Mail mit den Angaben zu Vorname und Alter. Außerdem bekom-men Sie eine Bestätigungsseite angezeigt (Abbildung 4.5).

2-6496.book Page 67 Tuesday, November 19, 2002 3:47 PM

Page 68: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

68

Was mache ich mit all den Daten?

Abbildung 4.5: Die Bestätigungsseite

4.5 Alles O.k.?So weit, so gut. Die Grundfunktionalität ist gegeben, aber damit geben wir uns natür-lich nicht zufrieden. Phorm kann schließlich viel mehr!

Als Nächstes wollen wir die übermittelten Formulardaten überprüfen. Es macht beiunserem Beispiel keinen Sinn, ein Alter unter 3 und über 120 einzugeben (es sei denn,Sie sind ein Wunderkind oder ein indischer Yogi). Formulare mit einem unsinnigenAlter sollen nicht verschickt werden. Wir möchten aber einem Benutzer, der ein sol-ches unsinniges Alter eingibt, die Möglichkeit geben, seine Eingabe zu wiederholen.

Um das zu erreichen, müssen wir zunächst die Regeln definieren, wann Formulareinga-ben ungültig sind. Legen Sie dazu im phorm-Verzeichnis eine Datei namens regeln.txtmit folgendem Inhalt an :

FILESfehler.htmlRULESRANGE 3 120 Alter 1Das eingebene Alter kauf ich Ihnen nicht ab!###

Diese Datei besteht aus zwei Sektionen: FILES und RULES. Unter FILES gibt man dieDatei an, die dem Benutzer bei einem Fehler angezeigt wird. Unter RULES kann manRegelsätze angeben, die einem starren Aufbau folgen müssen:

Kriterium <TAB-Taste> Formularfeld <TAB-Taste> Level

In unserem Fall lautet das Kriterium: RANGE 3 120

2-6496.book Page 68 Tuesday, November 19, 2002 3:47 PM

Page 69: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Alles O.k.?

69

Dies bedeutet, dass der Inhalt des Formularfelds Alter im Bereich zwischen 3 und 120liegen muss.

Jeder Regelsatz – einer pro Formularfeld, das überprüft werden soll – wird mit denZeichen ### abgeschlossen.

O.k., die Regeln kennen wir nun. Jetzt müssen wir Phorm nur noch mitteilen, dass esdie Regeln auch anwenden soll.

Öffnen Sie dazu die Konfigurationsdatei phormconfig.php3 und fügen Sie eine Zeile zuden Variablendefinitionen hinzu:

$PHORM_VALDEFS = "regeln.txt";

Das war’s, Sie können die Datei speichern und wieder schließen.

VORS

ICHT

! Der Regelsatz muss genau dem beschriebenen Aufbau folgen, sonstfunktioniert es nicht. Achten Sie also bei unserem Beispiel darauf,dass Sie zwischen dem Wort RANGE, den Zahlen 3 und 120 jeweils einLeerzeichen getippt haben und zwischen 120, Alter und 1 die (ÿ)-Taste.

PROF

ITIP

P

Es gibt viele Regelkriterien in Phorm. Eine Liste möglicher Werte kön-nen Sie im Handbuch nachlesen (Datei docs.rtf im phorm-Verzeichnis).

Es folgt eine Auswahl mit kurzer Beschreibung:

REQ Das Feld darf nicht leer sein.

EMAIL Das Feld muss eine gültige E-Mail-Adresse beinhalten.

CCARD Das Feld muss eine gültige Kreditkartennummer beinhalten.

ALPHA Das Feld enthält nur Buchstaben.

NUMERIC Das Feld enthält nur Ziffern, Kommas oder Punkte.

RANGE Das Feld enthält einen spezifizierten Bereich von Zahlenoder Buchstaben.

GT Der Inhalt des Feldes ist größer als der spezifizierte Wert.

LT Der Inhalt des Feldes ist kleiner als der spezifizierte Wert.

EQ Der Inhalt des Feldes ist gleich dem spezifizierten Wert.

NE Der Inhalt des Feldes ist ungleich dem spezifizierten Wert.

2-6496.book Page 69 Tuesday, November 19, 2002 3:47 PM

Page 70: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

70

Was mache ich mit all den Daten?

Eines fehlt noch: die Datei fehler.html, die wir in den Regeln angegeben haben und diedem Surfer im Falle einer regelwidrigen Eingabe angezeigt wird.

Legen Sie also die Datei mit folgendem Inhalt im phorm-Verzeichnis an:

<html> Ein Fehler ist aufgetreten:<br> <!-- Phorm Messages --> <p> <a href="/test.html">zum Formular</a></html>

Interessant ist hierbei die Zeile <!--Phorm Messages -->, die bewirkt, dass an dieserStelle die Fehlermeldungen ausgegeben werden, die in der Regeldatei definiert wurden.In unserem Beispiel erscheint also bei einem ungültigen Alter die folgende Meldung:

Das eingebene Alter kauf ich Ihnen nicht ab!

Zeit zum Testen! Rufen Sie die Formulardatei test.html auf, geben Sie ein ungültigesAlter ein und klicken Sie auf Los!. Wenn alles gut geht, erhalten Sie eine Ausgabe wiein Abbildung 4.6.

Abbildung 4.6: Die Fehlerseite

4.6 Ab in die Datenbank!Als Nächstes wollen wir die Formulardaten an MySQL schicken, um Sie dort dauerhaftin einer Datenbank zu speichern. Dazu ist ein wenig Vorarbeit nötig, da wir auf derDatenbankseite zuerst die nötige Infrastruktur schaffen müssen: die Tabellen, in diedie Daten gespeichert werden sollen.

Im einfachsten Fall benötigen Sie eine Tabelle, deren Spalten die Formularfelder ange-ben. In unserem Fall wären das die Spalten Vorname und Alter. Da jede Tabelle einerrelationalen Datenbank einen so genannten Primärschlüssel benötigt, der einen Daten-satz eindeutig identifiziert, fügen wir noch eine Spalte Zeit hinzu. Hier soll gespeichertwerden, wann das Formular abgeschickt wurde.

2-6496.book Page 70 Tuesday, November 19, 2002 3:47 PM

Page 71: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Ab in die Datenbank!

71

Wenn man eine Datenbanktabelle modelliert, muss man sich überlegen, welcherDatentyp in einer Spalte vorkommt. Datentypen können sein: Zahlen, Zeichenketten,Binärdaten usw. Für unser Beispiel benötigen wir die Datentypen varchar (Zeichen-kette variabler Länge) für den Vornamen und Integer (Ganzzahl) für das Alter unddie Zeit. Die Zeit wollen wir in einem unter UNIX üblichen Format speichern: als dieAnzahl verstrichener Millisekunden seit dem 1.1.1970.

Lassen Sie uns nach diesen grundsätzlichen Überlegungen die Tabelle mittels phpMy-Admin anlegen:

1 Öffnen Sie einen Browser und gehen Sie zur Startseite von phpMyAdmin: http://localhost/phpmyadmin.

2 Erzeugen Sie für unsere Testzwecke eine neue Datenbank namens phorm (Abbildung 4.7).

Abbildung 4.7: Erzeugen einer neuen Datenbank

3 Scrollen Sie etwas nach unten zur Rubrik Neue Tabelle erstellen. Erzeugen Sie eine neue Tabelle mit dem Namen Formulardaten. Geben Sie als Feldanzahl 3 ein (Abbildung 4.8), da wir drei Spalten benötigen: Zeit, Vorname und Alter.

2-6496.book Page 71 Tuesday, November 19, 2002 3:47 PM

Page 72: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

72

Was mache ich mit all den Daten?

Abbildung 4.8: Neue Tabelle erstellen

4 Klicken Sie auf OK, um mit der Definition der Spalten fortzufahren.

5 Füllen Sie die Felder wie in Definition der Tabellenspalte gezeigt. Kreuzen Sie für das Feld time noch das Kontrollkästchen Primärschlüssel an, das Sie nur dann auf dem Bildschirm sehen, wenn Sie etwas nach rechts scrollen.

Abbildung 4.9: Definition der Tabellenspalten

6 Klicken Sie auf die Schaltfläche Speichern.

2-6496.book Page 72 Tuesday, November 19, 2002 3:47 PM

Page 73: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Ab in die Datenbank!

73

Damit haben Sie die Grundlage geschaffen, um Daten ablegen zu können. Wie erkenntPhorm, in welche Datenbank, Tabelle und in welche Spalten bestimmte Formularfel-der gespeichert werden sollen?

Dies wird wieder über Variablen in der Konfigurationsdatei gesteuert. Öffnen Sie dieKonfigurationsdatei phormconfig.php3 und fügen Sie folgende Zeilen hinzu:

$DHost = "localhost";$DUser = "donald";$DPass = "donald";$DBase = "phorm";

Damit weiß Phorm, wie es sich mit MySQL verbinden soll und in welche Datenbankdie Daten gehören. Jetzt fehlt nur noch die Zuordnung zu den Spalten einer Tabelle.Fügen Sie dazu folgende Zeilen hinzu:

$PHORM_MYTABLE = "Formulardaten";$PHORM_MYVARS = "time=Zeit, name=Vorname, age=Alter";

Die erste Zeile ist klar: Hier wird die Tabelle angegeben. In der zweiten Zeile wird danndie Zuordnung von Spaltennamen zu Formularfeldern vorgenommen.

Speichern Sie die Konfigurationsdatei.

Um zu erfahren, wann das Formular abgeschickt wurde, müssen wir nun nur noch dieFormularseite test.html verändern.

Öffnen Sie die Datei und fügen Sie die folgenden Zeilen zwischen die form-Tags ein:

<input type="hidden" name="Zeit" value="<? echo time(); ?>">

Dieser Code bewirkt ein für den Benutzer unsichtbares Formularfeld, das als Wert dasResultat einer PHP-Anweisung hat: echo time();. Die Funktion time() liefert dieaktuelle Zeit zurück und echo schreibt diese in das HTML-Dokument.

Der Quellcode sieht dann insgesamt folgendermaßen aus:

<html> <form method="post" action="/phorm/phorm.php"> <input type="hidden" name="Zeit" value="<? echo time(); ?>" > Vorname <input type="text" name="Vorname"><br> Alter <input type="text" name="Alter"><br> <input type="submit" value="Los!"> </form></html>

2-6496.book Page 73 Tuesday, November 19, 2002 3:47 PM

Page 74: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

74

Was mache ich mit all den Daten?

Speichern Sie die Datei unter dem Namen test.php. Die Endung .php muss angegebenwerden, damit die in der Datei enthaltene PHP-Anweisung ausgeführt wird.

Rufen Sie zum Testen die veränderte Datei im Browser auf, geben Sie Testwerte ein(diesmal ein korrektes Alter) und schicken Sie das Formular ab.

Um zu sehen, ob die Daten in der Datenbank gespeichert wurden, verwenden Sie wie-der phpMyAdmin. Wählen Sie aus der linken Menüleiste die Datenbank phorm ausund dann die Tabelle Formulardaten (Abbildung 4.10).

Abbildung 4.10: Auswählen der Tabelle

Klicken Sie jetzt auf den Link Anzeigen in der oberen Menüzeile, um die Einträge derTabelle sehen zu können (Abbildung 4.11). Sollte der Link nicht aktiv sein, hat irgend-etwas nicht funktioniert.

2-6496.book Page 74 Tuesday, November 19, 2002 3:47 PM

Page 75: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Anpassen der Bestätigungsseite

75

Abbildung 4.11: Tabellendaten anzeigen

4.7 Anpassen der BestätigungsseiteIhnen ist sicher schon störend aufgefallen, dass die Bestätigungsseite in Englisch ver-fasst ist. Das wollen wir ändern. Auch die Schmetterlingsgrafik passt uns nicht, wirwollen etwas Eigenes.

Kein Problem, Phorm bietet umfangreiche Anpassungsmöglichkeiten. Erstellen Sieeine neue Datei im phorm-Verzeichnis mit dem Namen bestaetigung.html und mit fol-gendem Inhalt:

<html>Vielen Dank, {{Vorname}}! <br>Wir haben deine Daten erhalten.</html>

PROF

ITIP

P Wenn etwas nicht funktioniert, schauen Sie sich Ihre E-Mails an. DieFehlermeldungen werden von Phorm an die E-Mail-Adresse geschickt,die Sie in phormconfig.php3 in der Variable $PHORM_ALERTTOangegeben haben.

2-6496.book Page 75 Tuesday, November 19, 2002 3:47 PM

Page 76: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

76

Was mache ich mit all den Daten?

Der Ausdruck {{Vorname}} wird beim Anzeigen der Seite durch den Inhalt des For-mularfelds Vorname ersetzt, sodass der Benutzer eine individuelle Meldung bekommtund sich persönlich angesprochen fühlt.

Damit die neu erstellte Bestätigungsdatei auch benutzt wird, muss in der Konfigura-tionsdatei phormconfig.php3 eine neue Variable definiert werden:

$PHORM_ACK = "bestaetigung.html";

Nun können Sie die Funktionalität testen. Nach dem Abschicken des Formulars soll-ten Sie eine Seite wie in Abbildung 4.12 erhalten.

Abbildung 4.12: Die neue Bestätigungsseite

Damit haben Sie den Grundkurs in Phorm absolviert. Herzlichen Glückwunsch!

4.8 Der Umgang mit mehreren FormularenVielleicht ist es Ihnen schon aufgefallen: Wir haben bisher immer mit demselben ein-fachen Formular gearbeitet. Häufig gibt es auf einer Website aber mehrere Formulare.Jedes dieser Formulare kann eigene Regeln und unterschiedliche Bestätigungsseitenhaben.

Um dieses Problem zu lösen, kann man Unterverzeichnisse erstellen, die dann diejeweils notwendigen Dateien enthalten. Natürlich muss man Phorm vorgeben, fürwelches Formular es welche Unterverzeichnisse benutzen soll.

Das folgende Beispiel soll dies verdeutlichen:

Nehmen wir an, Sie möchten Ihrer Website ein weiteres Formular hinzufügen, daseinem Benutzer erlaubt, Informationsmaterial anzufordern (Abbildung 4.13).

2-6496.book Page 76 Tuesday, November 19, 2002 3:47 PM

Page 77: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Der Umgang mit mehreren Formularen

77

Abbildung 4.13: Formular zum Anfordern von Informationen

Gehen Sie folgendermaßen vor:

1 Erstellen Sie ein Unterverzeichnis info-formular in Ihrem phorm-Verzeichnis. Alle weiteren Dateien legen Sie in diesem Ordner an.

2 Erstellen Sie eine Datei formular.html mit folgendem Inhalt oder kopieren Sie sie von der CD-ROM:

<html> <h1>Informationsmaterial anfordern</h1> <form method="post" action="/phorm/phorm.php"> <input type="hidden" name="PHORM_NAME" value="infos" > <input type="hidden" name="PHORM_CONFIG" value="infoconfig.php3"

CD-R

OMAU

F DE

R Den Quellcode für alle Beispiele dieses Unterkapitels finden Sie aufder CD-ROM im Verzeichnis \software\phorm\Info-Formular.

2-6496.book Page 77 Tuesday, November 19, 2002 3:47 PM

Page 78: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

78

Was mache ich mit all den Daten?

> <table> <tr><td>Vorname</td> <td><input type="text" name="Vorname"></td></tr> <tr><td>Name </td> <td><input type="text" name="Name"></td></tr> <tr><td>Strasse</td> <td><input type="text" name="Strasse"></td></tr> <tr><td>PLZ </td> <td><input type="text" name="PLZ"></td></tr> <tr><td>Ort </td> <td><input type="text" name="Ort"></td></tr> <tr><td>Email</td> <td><input type="text" name="E-Mail"></td></tr> </table> <input type="submit" value="anfordern"> </form></html>

Beachten Sie die Zeilen

<input type="hidden" name="PHORM_NAME" value="infos"><input type="hidden" name="PHORM_CONFIG" value="infoconfig.php3">

Damit wird dem Formular ein Name gegeben, der dann von Phorm ausgewertetwird, um in ein Verzeichnis zu wechseln, in dem dann die spezifizierte Konfigu-rationsdatei (im Beispiel infoconfig.php3) steht. Mithilfe der Konfigurationsdateiwerden dann die zugehörige Regeldatei, die Fehlerseite und die Bestätigungsseitefestgelegt.

3 Erstellen Sie eine Konfigurationsdatei infoconfig.php3 für dieses Formular. Der einzige Unterschied zu der schon bekannten phormconfig.php3 ist, dass die neue Datei in einem Unterverzeichnis steht. Der Inhalt ist aber nahezu identisch:

<?php $PHORM_BASE = "info-formular"; $PHORM_ALERTTO = "[email protected]"; // Ihre E-Mail-Adr. $PHORM_TO = "[email protected]"; // Ihre E-Mail-Adr. $PHORM_SUBJECT = "Bitte um Informationen"; $PHORM_TMPL = "email_tpl.txt"; $PHORM_ACK = "bestaetigung.html"; $PHORM_VALDEFS = "regeln.txt";?>

2-6496.book Page 78 Tuesday, November 19, 2002 3:47 PM

Page 79: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Der Umgang mit mehreren Formularen

79

Neu für Sie ist hier die Zeile $PHORM_TMPL = email_tpl.txt. Damit wird eineVorlage für die zu sendende E-Mail festgelegt. Wir werden die Vorlage in einemspäteren Schritt erstellen.

4 Als Nächstes erstellen wir die Regeldatei regeln.txt. Wir legen fest, dass der Name aus Buchstaben bestehen muss, PLZ eine Zahl ist und unter E-Mail eine gültige E-Mail-Adresse angegeben ist:

FILESfehler.htmlRULESALPHA Name 1Im Feld Namen sind nur Buchstaben erlaubt.###NUMERIC PLZ 1Als Postleitzahl sind nur Zahlen gültig.###EMAIL Email 1Sie haben eine ungültige E-Mail-Adresse eingegeben.###REQ Email 1Bitte geben Sie eine E-Mail-Adresse an.###

5 Kopieren Sie die Bestätigungsseite bestaetigung.html und die Fehlerseite fehler.html von der CD-ROM.

6 Es fehlt noch die Vorlagendatei für die E-Mail, der wir in Schritt 3 den Namen email_tpl.txt gegeben haben:

Sehr geehrte Damen und Herren,

bitte schicken Sie mir Informationsmaterial.

Name: {{Name}}Straße: {{Straße}}PLZ: {{PLZ}}Ort: {{Ort}}

Für Rückfragen können Sie mich unter folgender E-Mail-Adresse erreichen:{{E-Mail}}

7 Als Letztes müssen wir Phorm noch mitteilen, dass es für dieses Formular in ein anderes Verzeichnis wechseln soll. Dazu verändern wir eine Datei namens phormbase.php3, die im phorm-Verzeichnis zu finden ist. Öffnen Sie die Datei in einem Editor und fügen Sie folgende Zeile hinzu:

2-6496.book Page 79 Tuesday, November 19, 2002 3:47 PM

Page 80: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

80

Was mache ich mit all den Daten?

infos info-formular

Achten Sie darauf, dass Sie als Trennung zwischen beiden Wörtern die (ÿ)-Tasteverwenden.

Ergebnis dieses WorkshopsDas war viel, aber es hat sich gelohnt !

Sie haben in diesem Workshop ein Skript namens Phorm kennen gelernt, dass Formu-lardaten entgegennimmt und weiterverarbeitet. Damit können Sie sich Daten perEmail zuschicken und sogar in eine Datenbank schreiben lassen.

Geben Sie Testdaten in das Formular ein (Abbildung 4.14).

Abbildung 4.14: Formular mit Testdaten

PROF

ITIP

P

Phorm liest trotzdem noch die globale Konfigurationsdatei phormcon-fig.php3 ein. Da wir dort festgelegt haben, dass Formulardaten in dieMySQL-Datenbank geschrieben werden sollen, versucht es Phormauch mit dem Info-Formular. Das kann aber nicht funktionieren, da esvollkommen andere Felder benutzt. Um eine Fehler-E-Mail zu umge-hen, löschen Sie die Datenbankkonfiguration aus phormconfig.php3.Wenn Sie die Daten des Info-Formulars in die Datenbank schreibenwollen, müssen Sie entsprechende Variablen in der Datei infocon-fig.php3 anlegen.

2-6496.book Page 80 Tuesday, November 19, 2002 3:47 PM

Page 81: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Der Umgang mit mehreren Formularen

81

Klicken Sie auf die Schaltfläche anfordern, um das Formular abzuschicken. Sie sollteneine E-Mail wie in Abbildung 4.15 erhalten.

Abbildung 4.15: Die E-Mail

2-6496.book Page 81 Tuesday, November 19, 2002 3:47 PM

Page 82: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

2-6496.book Page 82 Tuesday, November 19, 2002 3:47 PM

Page 83: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Workshop 5

Jetzt wird es bunt!Wie Sie Grafiken dynamisch erzeugen können

Was wäre eine Webseite heutzutage ohne Bilder? Langweilig! Daher werden fast immerGrafiken und Fotos eingebaut. Diese sind aber meist schon vorher erstellt worden und lie-gen als Gif- oder Jpeg-Dateien auf der Festplatte. Es geht aber auch anders: Grafiken lassensich „on the fly“ – also während ein PHP-Skript abläuft so nebenbei – erzeugen. Das istinsbesondere dann sinnvoll, wenn sich das Aussehen der Grafik im Laufe der Zeit oder inAbhängigkeit von Benutzerdaten ändert. Alle Arten von Diagrammen fallen zum Beispielin diese Kategorie. Ein hervorragendes Tool hierfür ist JpGraph, dessen Funktionsvielfaltseinesgleichen sucht. Ich werde Ihnen in diesem Kapitel JpGraph näher bringen.

Ergebnis dieses WorkshopsIn diesem Workshop werden Sie Diagramme erstellen, die Sie dann in Ihre Homepageintegrieren können. Die Diagramme werden Sie dynamisch von JpGraph erzeugenlassen. So können Sie Daten, die Sie zum Beispiel in einer Datenbank abgelegt haben,ansprechend präsentieren.

2-6496.book Page 83 Tuesday, November 19, 2002 3:47 PM

Page 84: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

84

Jetzt wird es bunt!

5.1 Die InstallationVor dem Vergnügen steht wie immer die Arbeit: die Installation des JpGraph-Pro-grammpakets und seine Konfiguration. Übrigens: JpGraph ist für nicht-kommerzielleZwecke kostenlos zu haben.

Entpacken Sie die Archivdatei in den Dokumentenordner Ihres Webservers. Wenn SiePHPTriad benutzen, ist das c:\apache\htdocs.

Prinzipiell ist JpGraph nun bereits einsatzbereit. Bei einer Standardinstallation vonPHPTriad muss allerdings noch ein PHP-Modul eingebunden werden, dass Befehlezum Erstellen und Manipulieren von Bildern ermöglicht: das so genannte GD-Modul.Gehen Sie dazu folgendermaßen vor:

1 Öffnen Sie in einem Texteditor die PHP-Konfigurationsdatei php.ini im Ver-zeichnis c:\apache\php.

2 Suchen Sie den Abschnitt Windows Extensions (Zeile 414, siehe Abbildung 5.1). Darunter sind alle verfügbaren Module von PHP aufgelistet. Beachten Sie das Semikolon am Anfang der Zeile. Es bedeutet, dass das Modul inaktiv ist, also nicht benutzt wird. Entfernen Sie das Semikolon vor dem Eintrag extension=php_gd.dll, um die GD-Funktionsbibliothek einzubinden.

CD-R

OMAU

F DE

R

Die Archivdatei jpgraph1.8.tar.gz finden Sie auf der CD-ROM im Ver-zeichnis \software\JpGraph.

Im Internet finden Sie eine aktuelle Version unter http://www.aditus.nu/jpgraph/.

VORS

ICHT

!

Wenn Sie nicht mit PHPTriad arbeiten, müssen Sie gegebenenfallsnoch den Pfad konfigurieren, in dem Ihre Extension-Dateien zu fin-den sind. Auch das machen Sie in der Datei php.ini im AbschnittExtensions.

2-6496.book Page 84 Tuesday, November 19, 2002 3:47 PM

Page 85: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Die Installation

85

Abbildung 5.1: Ändern der PHP-Konfigurationsdatei

3 Speichern Sie die Datei. Beim nächsten Aufruf eines PHP-Scripts werden die neuen Einstellungen übernommen.

Damit Sie JpGraph optimal ausnutzen können, sollten Sie noch ein paar JpGraph-Parameter einstellen. Öffnen Sie dazu die Datei jpgraph.php im Unterverzeichnis srcder JpGraph-Installation.

Im Abschnitt Directories können Sie die Einträge an Ihre Gegebenheiten anpassen(Abbildung 5.2).

VORS

ICHT

!

Auf Ihrem Webspace können Sie in den meisten Fällen die PHP-Konfiguration nicht ändern. Fragen Sie also nach, ob die GD-Biblio-thek und TrueType-Fonts vorhanden sind.

2-6496.book Page 85 Tuesday, November 19, 2002 3:47 PM

Page 86: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

86

Jetzt wird es bunt!

Abbildung 5.2: Anpassen von JpGraph

Jetzt sind wir so weit und können JpGraph in Aktion sehen!

Öffnen Sie einen Browser und wechseln Sie zur URL http://localhost/jpgraph-1.8/src/Examples/example0.php.

Wenn alles gut geht, sehen Sie ein Diagramm wie in Abbildung 5.3.

Abbildung 5.3: Ein Beispieldiagramm

2-6496.book Page 86 Tuesday, November 19, 2002 3:47 PM

Page 87: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Die Installation

87

Um einen Überblick über die vielfältigen Möglichkeiten von JpGraph zu bekommen,können sie die URL http://localhost/jpgraph-1.8/src/Examples/testsuit.php aufrufen(Abbildung 5.4). Das Laden der Seite dauert allerdings sehr lange, da über 200 Dia-gramme erzeugt werden.

Abbildung 5.4: Die JpGraph-Testseite

Jetzt brennen sie bestimmt schon darauf, selbst Grafiken erstellen zu lassen. Dannlesen Sie schnell weiter!

2-6496.book Page 87 Tuesday, November 19, 2002 3:47 PM

Page 88: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

88

Jetzt wird es bunt!

5.2 Do it yourselfEine schlechte Nachricht vorab: Um Grafiken erzeugen zu lassen, müssen Sie pro-grammieren. Aber keine Angst, ich zeige Ihnen genau, was Sie machen müssen. WennSie mehr Hintergrundinformationen brauchen, lesen Sie im Anhang den Abschnittüber PHP und seine Programmierkonzepte.

Wir fangen ganz einfach an, mit einem Code-Gerüst, das für alle folgenden Beispielegültig sein wird. Erstellen Sie die Datei mit dem Namen beispiel1.php im JpGraph-Installationsverzeichnis (c:\apache\htdocs\jpgraph-1.8).

1 Als Erstes muss die JpGraph-Grundfunktionalität eingebunden werden:

include ("src/jpgraph.php");

2 Als Nächstes muss man sich entscheiden, welche Art von Diagramm oder Grafik man erzeugen möchte. Daraus ergibt sich nämlich das JpGraph-Modul, dass ein-gebunden werden muss. Wir wollen eine Line-Chart erzeugen, daher lautet der Befehl:

include ("src/jpgraph_line.php");

3 Die Daten, die dargestellt werden sollen (Punkte auf der y-Achse) geben wir in einem so genannten Array an:

$ydata = array(11,3,8,12,5,1,9,13,5,7);

4 Jetzt erzeugen wir die zunächst noch leere Grafik in der Größe 350 x 250 Pixel:

$graph = new Graph(350,250,"auto");$graph->SetScale("textlin");

PROF

ITIP

P

Unsere Beispiele sollen im JpGraph-Installationsverzeichnis liegen,daher genügt der relative Pfad zu der jpgraph-Datei. Sollten sich IhreDateien an anderer Stelle befinden, müssen sie den Pfad entspre-chend anpassen.

Wenn Sie Ihre Dateien zum Beispiel im Verzeichnis c:\apache\htdocs\test anlegen, müsste die obige Zeile lauten:

include ("c:/apache/htdocs/jpgraph-1.8/src/jpgraph.php");

oder wieder relativ:

include ("../jpgraph-1.8/src/jpgraph.php");

2-6496.book Page 88 Tuesday, November 19, 2002 3:47 PM

Page 89: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Do it yourself

89

5 In diese leere Grafik soll nun ein Liniendiagramm eingefügt werden. Dazu erzeu-gen wir ein Liniendiagramm mit der folgenden Anweisung:

$plot=new LinePlot($ydata);

Beachten Sie, dass der Befehl als Parameter unser Datenarray $ydata bekommt.

6 Jetzt fügen wir das Liniendiagramm der Grafik hinzu:

$graph->Add($plot);

7 Schließlich lassen wir die fertige Grafik zeichnen:

$graph->Stroke();

Das war’s. Und hier noch einmal das komplette Listing:

<?phpinclude ("src/jpgraph.php");include ("src/jpgraph_line.php");

$ydata = array(5,3,8,12,13,7);

$graph = new Graph(350,250,"auto");$graph->SetScale("textlin");

$plot=new LinePlot($ydata);

$graph->Add($plot);

$graph->Stroke();?>

CD-R

OMAU

F DE

R Dieses erste Beispiel finden Sie auf der CD-ROM im Verzeichnis \soft-ware\JpGraph. Es trägt den Namen beispiel1.php. Die nächsten dreiBeispiele finden Sie ebenfalls dort.

2-6496.book Page 89 Tuesday, November 19, 2002 3:47 PM

Page 90: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

90

Jetzt wird es bunt!

Wechseln Sie im Browser zur URL http://localhost/jpgraph-1.8/beispiel1.php, um dasErgebnis zu sehen (Abbildung 5.5).

Abbildung 5.5: Ergebnis des ersten Beispielcodes

Die Art des Diagramms lässt sich in einfacher Weise ändern. Sie müssen lediglich dasentsprechende Modul einbinden und eine Programmzeile ändern:

Schreiben Sie statt

include ("src/jpgraph_line.php");

die Anweisung

include ("src/jpgraph_bar.php");

um das Balkendiagramm-Modul einzubinden.

Ändern sie die Zeile

$plot=new LinePlot($ydata);

um in:

$plot=new BarPlot($ydata);

2-6496.book Page 90 Tuesday, November 19, 2002 3:47 PM

Page 91: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Do it yourself

91

Nun erhalten Sie statt des Liniendiagramms ein Balkendiagramm (Abbildung 5.6).

Abbildung 5.6: Balkendiagramm

Wenn Sie lieber ein Tortendiagrammanzeigen lassen möchten, ändern Sie die include-Anweisung ab in:

include ("src/jpgraph_pie.php");

Die Code-Zeile ändern Sie ebenfalls ab in:

$plot=new PiePlot($ydata);

Ersetzen Sie jetzt noch die Zeile

$graph = new Graph(350,250,"auto");

durch

$graph = new PieGraph(350,250,"auto");

und schon erhalten Sie einen leckeren Kuchen (Abbildung 5.7).

2-6496.book Page 91 Tuesday, November 19, 2002 3:47 PM

Page 92: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

92

Jetzt wird es bunt!

Abbildung 5.7: Tortendiagramm

Als letztes Beispiel möchte ich Ihnen noch eine ausgefallene Diagrammart zeigen: dasRadardiagramm. Das Listing sieht folgendermaßen aus:

<?phpinclude ("src/jpgraph.php");include ("src/jpgraph_radar.php");

$ydata = array(5,3,8,12,13,7);

$graph = new RadarGraph(350,250,"auto");$graph->SetScale("lin");

$plot=new RadarPlot($ydata);

$graph->Add($plot);

$graph->Stroke();?>

2-6496.book Page 92 Tuesday, November 19, 2002 3:47 PM

Page 93: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Weitere Extras

93

Das Ergebnis sehen Sie in Abbildung 5.8.

Abbildung 5.8: Radardiagramm

5.3 Weitere ExtrasDas war natürlich noch lange nicht alles, was JpGraph kann. Insbesondere die kleinenDetails machen aus einem langweiligen Diagramm ein optisch ansprechendes, wie Siein Abbildung 5.9 sehen können.

Abbildung 5.9: Balkendiagramm

2-6496.book Page 93 Tuesday, November 19, 2002 3:47 PM

Page 94: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

94

Jetzt wird es bunt!

Hier hat sich im Vergleich zu Beispiel 2 aus dem letzten Abschnitt viel geändert. DieX-Achse ist beschriftet, es gibt eine Überschrift, die Balken sind breiter und habeneinen Farbverlauf.

Der dazugehörige Code lautet:

<?phpinclude ("src/jpgraph.php");include ("src/jpgraph_bar.php");

$datay=array(13,25,21,35,31,6);$datax=array("Jan","Feb","Mär","Apr","Mai","Jun");

$graph = new Graph(400,200,"auto");$graph->SetScale("textlin");$graph->img->SetMargin(60,20,30,50);$graph->SetMarginColor("silver");$graph->SetShadow();

$graph->title->Set("Balkendiagramm");$graph->title->SetColor("darkred");

$graph->xaxis->SetTickLabels($datax);

$bplot = new BarPlot($datay);$bplot->SetWidth(0.8);

$bplot->SetFillGradient("navy","lightblue",GRAD_MIDVER);

$graph->Add($bplot);

$graph->Stroke();?>

Was passiert hier?

Zunächst kommen wieder die Ihnen schon bekannten include-Anweisungen:

include ("src/jpgraph.php");include ("src/jpgraph_bar.php");

CD-R

OMAU

F DE

R Das Beispiel finden Sie auf der CD-ROM im Verzeichnis \software\JpGraph. Die Datei lautet extral.php.

2-6496.book Page 94 Tuesday, November 19, 2002 3:47 PM

Page 95: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Weitere Extras

95

Dann werden Datenpunkte für die Y-Achse festgelegt:

$datay=array(13,25,21,35,31,6);

Neu ist, dass für diese Datenpunkte zugehörige Beschriftungen für die X-Achse defi-niert werden:

$datax=array("Jan","Feb","Mär","Apr","Mai","Jun");

Als Nächstes wird eine leere Grafik der Größe 400 x 200 Pixel erzeugt:

$graph = new Graph(400,200,"auto");

Die folgende Anweisung bewirkt, dass die X-Achse eine Textskala erhält und die Y-Achse eine lineare Zahlenskala:

$graph->SetScale("textlin");

Nun wird der Rahmen festgelegt, also der Bereich zwischen Grafikrand und Dia-grammrand. Die Reihenfolge der Parameter ist: linker Rand, rechter Rand, obererRand, unterer Rand.

$graph->img->SetMargin(60,20,30,50);

Die Randfarbe wird auf Silber eingestellt:

$graph->SetMarginColor("silver");

Die nächste Anweisung fügt der Grafik einen Schatten zu, sodass es so wirkt, als ob sieein wenig oberhalb des Untergrunds schweben würde:

$graph->SetShadow();

Jetzt wird die Überschrift und ihre Farbe definiert:

$graph->title->Set("Balkendiagramm");$graph->title->SetColor("darkred");

Damit die X-Achse Ihre Beschriftung erhält, wird folgender Code verwendet:

$graph->xaxis->SetTickLabels($datax);

Die nächste Anweisung kennen Sie bereits aus den einfachen Beispielen. Sie dient da-zu, ein Balkendiagramm zu erzeugen:

$bplot = new BarPlot($datay);

PROF

ITIP

P

Das "auto" bewirkt, dass das Bildformat automatisch gewählt wird.Wenn möglich wird png benutzt, ansonsten gif oder jpeg.

2-6496.book Page 95 Tuesday, November 19, 2002 3:47 PM

Page 96: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

96

Jetzt wird es bunt!

Die Dicke der Balken lässt sich im Bereich von 0–1 festlegen:

$bplot->SetWidth(0.8);

Jetzt fehlt nur noch der Farbverlauf:

$bplot->SetFillGradient("navy","lightblue",GRAD_MIDVER);

Diese etwas komplexere Anweisung setzt die äußere Farbe der Balken auf Navy-Blau(navy) und die innere auf Hellblau (lightblue). Die Zwischentöne werden dann er-rechnet. Der letzte Parameter (GRAD_MIDVER) setzt die Art des Farbverlaufs – in unse-rem Fall von außen zur Mitte hin. Probieren Sie statt GRAD_MIDVER auch einmal denWert GRAD_HOR oder GRAD_VER.

Die nächsten beiden Anweisungen fügen das Diagramm der Grafik hinzu und zeich-nen die Grafik.

5.4 MySQL als DatenquelleNehmen wir an, sie wollten folgende Tabelle mit den Daten einer Bundestagswahl alsTortendiagramm darstellen (Abbildung 5.10):

SPD 38,5 %

CDU 38,5%

Grüne 9 %

FDP 7,5 %

PDS 4 %

Sonstige 3,5 %

Abbildung 5.10: Wahlergebnisse als Tortendiagramm

2-6496.book Page 96 Tuesday, November 19, 2002 3:47 PM

Page 97: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

MySQL als Datenquelle

97

Dazu benötigen wir folgenden Code:

<?phpinclude ("src/jpgraph.php");include ("src/jpgraph_pie.php");include ("src/jpgraph_pie3d.php");

$data = array(39, 39, 9, 7, 4, 4);$legende = array("CDU", "SPD", "Grüne", "FDP", "PDS", Sonst.");$farben = array("black", "red", "green", "yellow", lightred", "lightblue");

$graph = new PieGraph(400,200,"auto");$graph->SetShadow();

$graph->title->Set("Wahlergebnisse");

$p1 = new PiePlot3D($data);$p1->SetAngle(40);$p1->SetSize(0.5);$p1->SetCenter(0.45);$p1->SetLegends($legende);$p1->SetSliceColors($farben);

$graph->Add($p1);$graph->Stroke();?>

Nun wäre es doch sehr praktisch, wenn Sie die Datenwerte aus einer Tabelle in derMySQL-Datenbank lesen und daraus das Diagramm erzeugen könnten. Kein Prob-lem, ich zeige Ihnen wie das geht.

Dazu legen wir zunächst die Tabelle in der MySQL-Datenbank an.

CD-R

OMAU

F DE

R Das Beispiel finden Sie auf der CD-ROM im Verzeichnis \software\JpGraph. Die Datei lautet wah1l.php.

2-6496.book Page 97 Tuesday, November 19, 2002 3:47 PM

Page 98: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

98

Jetzt wird es bunt!

1 Wechseln Sie im Browser auf die MySQL-Administrationsseite (http://localhost/phpmyadmin).

2 Schreiben Sie in das Feld Neue Datenbank erzeugen den Namen wahl und klicken Sie auf Erzeugen.

3 Scrollen Sie zum Bereich Neue Tabelle erstellen und geben Sie als Namen ergebnisse und als Anzahl Felder 2 ein (Abbildung 5.11).

Abbildung 5.11: Neue Tabelle erzeugen

4 Füllen Sie die Felder wie in Abbildung 5.12 gezeigt und klicken Sie auf Speichern.

Abbildung 5.12: Spalten definieren

2-6496.book Page 98 Tuesday, November 19, 2002 3:47 PM

Page 99: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

MySQL als Datenquelle

99

5 Jetzt ist die Tabelle mit zwei Spalten angelegt und wir können sie mit Werten fül-len. Klicken sie dazu auf den Link Einfügen im oberen Menü.

6 Füllen Sie die Felder analog zu Abbildung 5.13 und klicken Sie auf OK. Wenn Sie die Option Neuen Datensatz einfügen aktiviert haben, können Sie gleich mit dem nächsten Datensatz weitermachen. Verfahren Sie so für alle Parteien.

Abbildung 5.13: Werte eintragen

7 Aktivieren Sie beim letzten Datensatz die Option zurück , um wieder auf die Hauptseite der Tabelle zu gelangen. Klicken Sie hier auf den Link Anzeigen, um die Tabelleneinträge zu überprüfen. Sie sollten ein Ergebnis wie in Abbildung 5.14 erhalten.

Das war die Vorarbeit. Die Daten befinden sich nun in einer Datenbank. Diese Datenkönnen natürlich auch aus einer Online-Umfrage kommen und dann in dieser Tabellegespeichert werden.

2-6496.book Page 99 Tuesday, November 19, 2002 3:47 PM

Page 100: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

100

Jetzt wird es bunt!

Abbildung 5.14: Anzeigen des Tabelleninhaltes

Wie bekommen wir jetzt die Daten als Werte in ein Diagramm? Dazu habe ich Ihnenein PHP-Script geschrieben, das Ihnen alle lästigen Details abnimmt.

Die Funktionalität des Scripts können Sie über die folgende Anweisung einbinden:

include ("dataFromDB.php");

Um sich mit der MySQL-Datenbank zu verbinden, geben Sie folgenden Code ein:

connectToDB("localhost", "donald", "donald", "wahl");

CD-R

OMAU

F DE

R Das Script finden Sie auf der CD-ROM im Verzeichnis \software\JpGraph unter dem Namen dataFromDB.php.

2-6496.book Page 100 Tuesday, November 19, 2002 3:47 PM

Page 101: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

MySQL als Datenquelle

101

Die Parameter sind – der Reihe nach – der Name des Datebankrechners (in den aller-meisten Fällen localhost), der Benutzername, das Passwort und die Datenbank, mit derman sich verbinden möchte.

Um dann ein Daten-Array aus einer Tabelle zu erhalten, schreiben Sie:

$data = dataFromTable("ergebnisse", "prozente");

Als Parameter erwartet die Funktion den Namen der Tabelle und den Namen der Spalte,aus der die Werte genommen werden sollen.

Wenn alle Daten aus der Datenbank geholt wurden, sollten Sie die Datenbankverbin-dung mit folgendem Befehl wieder schließen:

closeConToDB();

Insgesamt sieht unser Script zur Erzeugung eines Tortendiagramms folgendermaßenaus:

<?phpinclude ("src/jpgraph.php");include ("src/jpgraph_pie.php");include ("src/jpgraph_pie3d.php");include ("dataFromDB.php");

connectToDB("localhost", "donald", "donald", "wahl");

$data = dataFromTable("ergebnisse", "prozente");$legende = dataFromTable("ergebnisse", "partei");$farben = array("black", "red", "green", "yellow", lightred", "lightblue");

closeConToDB();

$graph = new PieGraph(400,200,"auto");

$graph->SetShadow();

$graph->title->Set("Wahlergebnisse");

$p1 = new PiePlot3D($data);$p1->SetAngle(40);$p1->SetSize(0.5);$p1->SetCenter(0.45);$p1->SetLegends($legende);$p1->SetSliceColors($farben);

$graph->Add($p1);$graph->Stroke();?>

2-6496.book Page 101 Tuesday, November 19, 2002 3:47 PM

Page 102: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

102

Jetzt wird es bunt!

5.5 HilfeDieses Kapitel war nur ein Crashkurs in JpGraph. Wenn Sie die vielen Funktionen vonJpGraph wirklich nutzen wollen (und die englische Sprache beherrschen), gibt es vieleDokumente und Webseiten, die Ihnen weiterhelfen.

Zu nennen ist zunächst die Webseite von JpGraph: http://www.aditus.nu/jpgraph/(Abbildung 5.15)

Abbildung 5.15: JpGraph-Homepage

CD-R

OMAU

F DE

R Das Script finden Sie auf der CD-ROM unter dem Namen wahl2.phpim Verzeichnis \software\JpGraph.

2-6496.book Page 102 Tuesday, November 19, 2002 3:47 PM

Page 103: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Hilfe

103

Wenn Sie JpGraph installieren, bekommen Sie ein Handbuch mitgeliefert. Sie könnenes sich unter folgender URL ansehen: http://localhost/jpgraph-1.8/docs/manual/html/(Abb. 5.16)

Abbildung 5.16: Das JpGraph-Handbuch

Das Handbuch wird Ihnen allerdings nur dann eine Hilfe sein, wenn Sie die Grund-konzepte des Programmierens kennen.

2-6496.book Page 103 Tuesday, November 19, 2002 3:47 PM

Page 104: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

104

Jetzt wird es bunt!

Ergebnis dieses WorkshopsSie haben in diesem Workshop gelern, wie Sie dynamisch Diagramme erzeugen kön-nen, die auf Daten basieren, die in einer Datenbank abgelegt sein können. Nutzen SieJpGraph, um Ihre Seite aufzuwerten !

2-6496.book Page 104 Tuesday, November 19, 2002 3:47 PM

Page 105: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Workshop 6

Einladung zum Diaabend

Wie Sie Ihre Freunde mit den letzten Urlaubsbildern entzücken

Eines der häufigsten Anwendungsgebiete von privaten Homepages ist sicherlich dasVeröffentlichen von Fotos. Wie verfährt man jedoch bei einer großen Anzahl an Fotos?Die Fotos müssen strukturiert abgelegt werden und vielleicht soll nicht jeder beliebigeSurfer alle Bilder sehen können. Außerdem ist eine Übersicht über die Fotos hilfreich.

Diese und andere Anforderungen erfüllen Web-Fotoalben. Ein besonders gutes undkostenloses Exemplar dieser Gattung nennt sich Gallery. Es ermöglicht Ihnen, eine Foto-galerie ins Netz zu stellen, die aus verschiedenen Fotoalben bestehen kann. Sie werdenGallery in diesem Kapitel kennen und vermutlich auch lieben lernen.

2-6496.book Page 105 Tuesday, November 19, 2002 3:47 PM

Page 106: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

106

Einladung zum Diaabend

Ergebnis dieses WorkshopsIn diesem Workshop werden Sie alles nötige lernen, damit Sie ein Fotoalbum ins Inter-net stellen können, so dass man Ihre Bilder auf der ganzen Welt bestaunen kann.

6.1 InstallationSchreiten wir direkt zur Tat und beginnen mit der Installation von Gallery.

1 Entpacken Sie das Archiv gallery-1.3.1.tar.gz in Ihr Dokumentenverzeichnis des Webservers (c:\apache\htdocs). Die Dateien im Archiv befinden sich bereits in einem Unterverzeichnis namens gallery, Sie brauchen also keines vorher anzulegen.

2 Entpacken Sie das Archiv netpbm1.1-gallery1.0-win32.tgz in das neu entstandene Verzeichnis gallery.

CD-R

OMAU

F DE

R

Die notwendigen Dateien zur Installation von Gallery finden Sie aufder CD-ROM unter \software\Gallery.

Eine aktuelle Version bekommen Sie im Internet unter http://gallery.menalto.com.

2-6496.book Page 106 Tuesday, November 19, 2002 3:47 PM

Page 107: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Installation

107

3 Öffnen Sie einen Browser und gehen Sie zur URL htpp://localhost/gallery/setup/, um die Installationsroutine von Gallery aufzurufen.

4 Sie befinden sich nun im ersten Installationsschritt. Hier wird überprüft, ob alle Bedingungen erfüllt sind, damit Gallery einwandfrei funktionieren kann (Abbildung 6.1). Es wird zum Beispiel überprüft, welche PHP-Version installiert ist und ob die NetPBM-Funktionsbibliothek gefunden werden kann. Einige Voraussetzungen sind optional, sodass Sie hier eine Meldung erhalten, die uns aber nicht weiter stört.

Abbildung 6.1: Schritt1 des Gallery-Setups

PROF

ITIP

PNetPBM ist eine Funktionsbibliothek zur Manipulation von Bildern. DaGallery diese Funktionen verwendet, muss NetPBM auch auf demServer installiert sein. Im Falle des Testsystems mit PHPTriad ist dieWindows-Version zu benutzen. Auf der CD-ROM finden Sie auch eineVersion für Linux namens netpbm1.1-gallery1.0-linux2.2-redhat6.2-intel.tgz. Um Gallery auf Ihrem Webspace einsetzen zu können, müssenSie vermutlich die Linux-Version in einem Verzeichnis Ihres Webspacesentpacken. Sollte Ihr Hoster ein anderes Betriebssystem verwenden (z.B.Solaris oder FreeBSD), müssen Sie sich entsprechende Versionen vonNetPBM besorgen. Weitere Informationen und Download-Links fin-den Sie auf der Homepage von Gallery: http://gallery.menalto.com.

2-6496.book Page 107 Tuesday, November 19, 2002 3:47 PM

Page 108: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

108

Einladung zum Diaabend

5 Klicken Sie auf Configure Gallery am Ende der Seite, um zum nächsten Installa-tionsschritt zu gelangen.

6 In Schritt 2 der Installation legen Sie einige wichtige Grundeinstellungen fest. Folgende Felder müssen ausgefüllt werden:

■ Gallery Title (Überschrift Ihrer Bildergalerie): Test

■ Admin Password (Kennwort für den Administrator): goofy

■ Path to NetPBM (Pfad, in dem Sie NetPBM installiert haben): c:\apache\htdocs\gallery\netpbm

■ Album directory (Verzeichnis, in dem die Alben und Bilder abgelegt werden):c:\apache\htdocs\albums

■ Temporary Directory (Temporärer Ordner): Dieser ist je nach Betiebssystemunterschiedlich, unter Windows NT/2000 lautet er c:\winnt\temp

■ Alle weiteren Felder sind sicher ebenfalls interessant und bei Gelegenheit solltenSie sich einmal alles genau durchlesen, aber jetzt sind wir zu ungeduldig dazu.

Abbildung 6.2: Schritt 2 der Installation

2-6496.book Page 108 Tuesday, November 19, 2002 3:47 PM

Page 109: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Installation

109

7 Erstellen Sie die Verzeichnisse, die Sie als Album- und Temporärverzeichnis fest-gelegt haben, falls Sie nicht bereits existieren.

8 Gehen Sie weiter zum nächsten Installationsschritt, indem Sie auf die Schaltfläche Album Defaults klicken.

9 In Schritt 3 der Installation können Sie die Voreinstellung für Fotoalben fest-legen, die dann beim Erstellen neuer Alben als Standard übernommen wird. Sie können die Werte aber für jedes Album individuell verändern. Sie können die vorgeschlagenen Werte einfach übernehmen, aber auch hier gilt, dass Sie sich bei Gelegenheit eingehender damit beschäftigen sollten. Klicken Sie auf Save Settings, um zum letzten Installationsschritt zu gelangen.

10 Es wird angezeigt, welche Konfigurationseinstellungen sich durch Ihre Auswahl ergeben haben (Abbildung 6.3). Um den Inhalt brauchen Sie sich nicht zu kümmern, wichtig ist nur, dass keine rote Fehlermeldung erscheint. Wenn dies dennoch der Fall ist, gehen Sie noch einmal zurück und überprüfen Sie, ob Sie alle Schritte korrekt ausgeführt haben.

Abbildung 6.3: Der letzte Installationsschritt

11 Klicken Sie auf Save Config, um die Installation abzuschließen.

2-6496.book Page 109 Tuesday, November 19, 2002 3:47 PM

Page 110: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

110

Einladung zum Diaabend

Abbildung 6.4: Setzen der Dateirechte mit SmartFTP

Puh, das war ganz schön aufwändig. Aber es lohnt sich, wie Sie gleich sehen werden!

6.2 Let the show beginPrinzipiell ist Gallery jetzt einsatzbereit – es fehlt nur noch das Wichtigste: die Fotos!

Sehen Sie sich zunächst die leere Galerie an: http://localhost/gallery/. Es gibt wederAlben noch Fotos, welch trister Anblick. Lassen Sie uns das schleunigst ändern und einneues Album mit einigen Fotos erstellen:

PROF

ITIP

PSie erhalten eine Hinweismeldung, dass sie Gallery noch sichern müs-sen. Dabei geht es darum, die Rechte auf die Konfigurationsdatei zuändern, sodass nicht jede beliebige Person sie ändern kann. Dies isteigentlich nur wichtig, wenn Sie Gallery auf Ihrem Webspace betrei-ben. Mit dem in Kapitel 1 vorgestellten FTP-Client SmartFTP könnenSie die Rechte auf die Kennzahl 644 setzen, indem Sie die Datei mitder Maus auswählen und dann (F7) drücken (Abbildung 6.4). Ent-sprechend verfahren Sie dann mit der Datei .htaccess.

2-6496.book Page 110 Tuesday, November 19, 2002 3:47 PM

Page 111: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Let the show begin

111

1 Klicken Sie auf den Link Login in der rechten oberen Ecke des Fensters, um sich als Administrator einzuloggen.

2 Geben Sie als Benutzername admin und als Passwort goofy ein (Abbildung 6.5) und klicken Sie auf die Schaltfläche Login.

Abbildung 6.5: Login-Fenster

3 Wie Sie sehen, haben Sie nun wesentlich mehr Möglichkeiten. Klicken Sie auf den Link new Album, um ein neues Album zu erstellen.

4 Das neue Album erhält standardmäßig den Namen Untitled (unbetitelt). Das werden wir später ändern. Zunächst wollen wir aber ein paar Bilder hinzufügen. Klicken Sie auf den Link add Photos.

5 Klicken Sie auf die jeweiligen Durchsuchen...-Schaltflächen, um zu Ihren Bildern zu navigieren (Abbildung 6.6). Falls Sie mehr als fünf Bilder hochladen wollen, müssen Sie die Anzahl entsprechend hochsetzen. Klicken Sie auf Upload Now, wenn Sie fertig sind.

CD-R

OMAU

F DE

R Falls Sie gerade keine Bilder in den unterstützten Formaten greifbarhaben, habe ich Ihnen auf der CD-ROM drei Bilder mitgegeben. Siefinden Sie unter \software\Gallery\images.

2-6496.book Page 111 Tuesday, November 19, 2002 3:47 PM

Page 112: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

112

Einladung zum Diaabend

Abbildung 6.6: Fotos hinzufügen

6 Es wird ein Wartefenster angezeigt und der Status der Uploads. Am Ende sehen Sie Ihre ersten Bilder in Gallery als Übersicht (Abbildung 6.7). Wollen Sie ein Bild genauer betrachten, müssen Sie nur darauf klicken.

Abbildung 6.7: Das erste Album

2-6496.book Page 112 Tuesday, November 19, 2002 3:47 PM

Page 113: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Keine Chance für Voyeure

113

Lassen Sie uns noch ein paar kosmetische Änderungen vornehmen: den Namen desAlbums, die Hintergrundfarbe und den Bilderrahmen.

Klicken Sie dazu auf den Link properties und ändern Sie die Einstellungen des Albumsanalog zu Abbildung 6.8. Klicken Sie auf Apply, um die Änderungen zu übernehmen.

Abbildung 6.8: Eigenschaften des Albums

Jetzt sieht das Ganze farblich doch schon etwas irischer aus, finden Sie nicht?

6.3 Keine Chance für VoyeureEs ist nicht jedermanns Sache, alle möglichen intimen Bilder ins Internet zu stellen, wojeder auf der Welt sie sehen kann. Gallery ermöglicht es, pro Album zu unterscheiden,wer es anschauen darf und wer nicht.

Dazu bietet es zunächst für eine grobe Unterscheidung folgende Benutzergruppen an:

■ EVERYBODY: jeder

■ NOBODY: keiner (außer dem Administrator, der darf alles)

■ LOGGEDIN: Alle eingeloggten Benutzer, unabhängig von der Kennung

Zusätzlich kann man für jeden Benutzer einzeln Rechte vergeben. Insgesamt bietetGallery ein ausgetüfteltes Rechtesystem, sodass hier sehr feine Unterscheidungen ge-macht werden können.

Die Grundlage für das Rechtesystem ist natürlich, dass außer dem Administrator nochweitere Benutzerkennungen existieren. Deswegen legen wir zunächst einen neuen Be-nutzer an:

1 Gehen Sie auf die Gallery-Startseite http://localhost/gallery/. Noch sind Sie als Administrator eingeloggt und haben daher auch auf der Startseite ein erweitertes Menü.

2-6496.book Page 113 Tuesday, November 19, 2002 3:47 PM

Page 114: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

114

Einladung zum Diaabend

2 Wählen Sie den Link manage users in der oberen Menüzeile.

3 Im darauf folgenden Fenster können Sie auswählen, ob Sie einen bestehenden Benutzer ändern oder löschen oder einen neuen Benutzer anlegen wollen. Kli-cken Sie auf die Schaltfläche Create.

4 Geben Sie im erscheinenden Fenster die Benutzerdaten wie in Abbildung 6.9 ein, ein Passwort können Sie sich ausdenken.

Abbildung 6.9: Neuen Benutzer anlegen

5 Klicken Sie auf Create, um den Benutzer mit der Kennung voyeur zu erzeugen.

6 Wiederholen Sie die letzten drei Schritte, um einen zweiten Benutzer namens freund zu erstellen.

Sie können sich wahrscheinlich schon denken, wo das hinführen soll: Der Benutzermit der Kennung voyeur soll keine Rechte erhalten, d.h. keine Fotos anschauen dürfen,der Benutzer freund hingegen darf das Irland-Album sehen.

Wie lässt sich das bewerkstelligen?

1 Wählen Sie aus dem Album-Menü, das für den Administrator auch auf der Start-seite erreichbar ist, den Eintrag permissions.

2 Im linken großen Auswahlfenster sehen Sie alle Benutzerkennungen sowie die drei erwähnten Nutzergruppen EVERYBODY, LOGGEDIN und NOBODY. In den rechten kleinen Auswahlfenstern sind die Benutzer angezeigt, die das ent-sprechende Recht haben. Zurzeit ist unter Users who can see the album (Benutzer,

2-6496.book Page 114 Tuesday, November 19, 2002 3:47 PM

Page 115: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Keine Chance für Voyeure

115

die das Album sehen können) als Nutzergruppe EVERYBODY (jeder) angege-ben. Das wollen wir abändern, wie in Abbildung 6.10 gezeigt.

Abbildung 6.10: Rechte ändern

3 Wählen Sie den Eintrag EVERYBODY aus der rechten Liste aus und klicken Sie auf den Pfeil nach links, um den Eintrag aus dem Fenster zu entfernen. Im Fens-ter steht jetzt NOBODY (niemand).

4 Wählen Sie jetzt aus dem linken Auswahlfenster den Eintrag freund und klicken Sie auf den Pfeil nach rechts, damit der Benutzer in der rechten Liste erscheint.

5 Klicken Sie auf die Schaltfläche Save zum Speichern der Änderungen und anschließend auf Done.

PROF

ITIP

P

Wie sie auf der Rechteseite gesehen haben, gibt es eine Vielzahl anRechten, die Sie vergeben können und nicht nur das Recht, ein Albumanzuschauen oder nicht. Sie können folgende Rechte vergeben:

■ Ändern des Album-Texts

■ Hinzufügen von Fotos

■ Verändern von Fotos

■ Löschen von Fotos

■ Erstellen von Unteralben

2-6496.book Page 115 Tuesday, November 19, 2002 3:47 PM

Page 116: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

116

Einladung zum Diaabend

Testen Sie die Ergebnisse Ihrer Bemühungen! Loggen Sie sich als Administrator aus,denn der Administrator darf ja generell alles sehen. Sie gehören jetzt zur NutzergruppeEVERYBODY, da sie ein anonymer Surfer sind. Demzufolge sehen Sie auch dasIrland-Album nicht. Loggen Sie sich zunächst als voyeur ein; es sollte sich nichts ver-ändern. Probieren Sie es dann als Benutzer freund. Achten Sie darauf, dass Sie zwar dieFotos sehen, aber keinerlei Änderungen vornehmen können. Funktioniert es?

6.4 Gallery RemoteBilder einzeln hochzuladen, so wie wir das getan haben, mag für eine kleine Anzahl anBildern in Ordnung sein. Aber wenn Sie Ihre Fotosammlung zum ersten Mal über Gal-lery zugänglich machen wollen, werden Sie vielleicht Hunderte von Fotos übertragenmüssen. Für diesen und ähnliche Fälle bietet Gallery ein kostenloses Zusatztool na-mens Gallery Remote an. Gallery Remote läuft als Java-Applikation auf dem Rechner,auf dessen Festplatte die Bilder liegen. Es verbindet sich mit dem Webserver, auf demGallery läuft, und überträgt ausgewählte Bilder automatisch.

Starten Sie die Installation von Gallery Remote, indem Sie auf das Archiv doppelklicken.Sollten Java-Archive noch nicht mit der Lauftzeitumgebung verknüpft sein, werden Sie ge-fragt, mit welchem Programm die Datei geöffnet werden soll. Wählen Sie aus der Liste dasProgramm javaw und kreuzen Sie an, dass zukünftig immer dieses Programm zum Öff-nen benutzt werden soll (Abbildung 6.11). Die Installation startet dann (Abbildung 6.12).

CD-R

OMAU

F DE

R Gallery Remote finden Sie auf der CD-ROM unter \software\Galleryin einem Java-Archiv namens InstallGalleryRemote.jar.

VORS

ICHT

!

Da Gallery Remote in Java geschrieben ist, benötigen Sie eine Java-Laufzeitumgebung auf Ihrem Rechner. Falls Sie noch keine installierthaben, können Sie das so genannte JRE – Java Runtime Environment(Java-Laufzeitumgebung) von der Webseite http://java.sun.com herun-terladen. Wählen Sie dort J2SE in der neuesten Version und suchen Sieden Download-Link zu JRE für Ihr Betriebssystem in der gewünschtenSprachversion. In unserem Fall wäre das die internationale Version fürWindows. Aber auch für Linux findet sich dort eine Version.

2-6496.book Page 116 Tuesday, November 19, 2002 3:47 PM

Page 117: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Gallery Remote

117

Abbildung 6.11: Verknüpfung für .jar-Dateien

Abbildung 6.12: Installation von Gallery Remote

Klicken Sie auf Next und übernehmen Sie die Standardparameter. Sie müssen im drit-ten Schritt die so genannte Java Virtual Machine auswählen, die benötigt wird, umGallery Remote auszuführen. Diese JVM ist Bestandteil der Java-Laufzeitumgebungund nennt sich unter Windows java.exe. Nachdem Sie die JVM ausgewählt haben, kli-cken Sie sich weiter durch bis zum Installationsende.

2-6496.book Page 117 Tuesday, November 19, 2002 3:47 PM

Page 118: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

118

Einladung zum Diaabend

Nun können Sie durch Doppelklick auf RunGalleryRemote.bat das Programm starten.Es öffnen sich zwei Fenster: ein Bildvorschau-Fenster und ein Hauptfenster (Abbil-dung 6.13).

Abbildung 6.13: Das Hauptfenster von Gallery Remote

Lassen Sie uns nach der anstrengenden Installationsarbeit jetzt die Früchte unserer An-strengungen ernten: Wir wollen unserem Irland-Fotoalbum einige Bilder hinzufügen.

CD-R

OMAU

F DE

R

Sie sind fast am Ziel. Leider hat sich in der aktuellen Version vonGallery Remote ein Bug eingeschlichen, sodass sich das Programmnicht korrekt starten lässt. Diesen Fehler habe ich korrigiert, sie findendie verbesserten Dateien auf der CD-ROM im Ordner \software\Gal-lery\bugfix unter den Namen GalleryRemote.jar und RunGalleryRe-mote.bat. Kopieren Sie diese Dateien in das Installationsverzeichnisvon Gallery Remote (im Normalfall C:\Program Files\Gallery).

2-6496.book Page 118 Tuesday, November 19, 2002 3:47 PM

Page 119: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Gallery Remote

119

1 Geben Sie die URL Ihres Webspaces mit Gallery in das Feld Gallery URL ein. Für das Testsystem wäre das http://localhost/gallery. Geben Sie außerdem den User-name admin und das Passwort goofy an.

2 Klicken Sie auf Fetch Albums. Nachdem sich Gallery Remote mit Gallery verbun-den hat, sehen Sie die zur Auswahl stehenden Fotoalben im Feld Upload to Album. Das Irland-Album sollte hier bereits ausgewählt sein.

3 Öffnen Sie nun den Windows-Explorer und wechseln Sie auf die CD-ROM ins Verzeichnis \software\gallery\uploads. Ziehen Sie die dort befindlichen Bilder mit der Maus in die große weiße Fläche des Gallery-Remote-Fensters. Das Ergebnis sieht dann wie in Abbildung 6.14 aus. Wenn Sie ein Bild mit der Maus anwählen, sehen Sie es im Vorschau-Fenster.

Abbildung 6.14: Bilder zum Upload auswählen

4 Wenn Sie mit den Bildern zufrieden sind, klicken Sie auf die Schaltfläche Upload Now, um die Bilder Ihrem Web-Fotoalbum hinzuzufügen.

2-6496.book Page 119 Tuesday, November 19, 2002 3:47 PM

Page 120: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

120

Einladung zum Diaabend

Das war’s. Sie können jetzt Ihr Fotoalbum bestaunen. Vergessen Sie aber nicht, sich alsadmin oder freund einzuloggen, denn andernfalls können Sie das Irland-Album nichtsehen.

Ergebnis dieses WorkshopsSie haben jetzt die nötigen Kenntnisse und die nötigen Programme, um ein Fotoalbumin Ihre Website zu integrieren.

2-6496.book Page 120 Tuesday, November 19, 2002 3:47 PM

Page 121: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Workshop 7

Gibt’s was Neues?

Immer auf dem Laufenden mit einem News-System

Viele Websites haben eine Rubrik Neuigkeiten. Ist Ihnen schon aufgefallen, dass dieseNeuigkeiten eher „Altigkeiten“ heißen müssten?

Das liegt daran, dass die Organisation und Anzeige der News zu viel Arbeit macht. Esgibt aber eine Lösung: ein professionelles News-System. Ein News-System verwaltetalle Neuigkeiten und bietet Strukturierungselemente wie Kategorien. Neue Einträgehinzuzufügen ist sehr einfach.

Die Installation, erstmalige Konfiguration und das Anpassen des Erscheinungsbildeserfordert einen gewissen Arbeitsaufwand. Dieser lohnt sich aber, da das weitere Arbei-ten sehr einfach ist, insbesondere wenn Sie viele News-Artikel verwalten müssen.

Aus der Vielfalt der frei erhältlichen News-Scripts habe ich ein deutsches Produktnamens SimpleNews ausgewählt, da es sehr flexibel ist und unzählige Features bietet.Das Standardlayout ist zwar farblich nicht ansprechend, aber das lässt sich zum Glückverändern.

2-6496.book Page 121 Tuesday, November 19, 2002 3:47 PM

Page 122: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

122

Gibt’s was Neues?

Ergebnis dieses WorkshopsSie lernen, wie Sie SimpleNews effektiv einsetzen können, um auf Ihrer Website Neuig-keiten darstellen zu können.

7.1 Die Installation von SimpleNews

1 Legen Sie ein Verzeichnis namens simpnews im Dokumentenverzeichnis des Webservers (c:\apache\htdocs) an.

2 Extrahieren Sie das Archiv simpnews.zip in das neu erstellte Verzeichnis.

3 Öffnen Sie einen Browser und gehen sie zur URL http://localhost/simpnews/admin/mkconfig.php. Wählen Sie Deutsch als Sprache (Abbildung 7.1).

CD-R

OMAU

F DE

R

Das Zip-Archiv mit den notwendigen Dateien finden Sie auf der CD-ROM im Verzeichnis \software\simplenews.

Im Internet finden Sie eine aktuelle Version unter http://www.boesch-it.de.

2-6496.book Page 122 Tuesday, November 19, 2002 3:47 PM

Page 123: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Die Installation von SimpleNews

123

Abbildung 7.1: Auswahl der Sprache

4 Füllen Sie die Felder wie in Abbildung 7.2 gezeigt. Die meisten Werte sind bereits korrekt voreingestellt.

Abbildung 7.2: Konfigurationseinstellungen

2-6496.book Page 123 Tuesday, November 19, 2002 3:47 PM

Page 124: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

124

Gibt’s was Neues?

5 Klicken Sie auf die Schaltfläche Submit. Sie erhalten die Meldung: config.php erzeugt.

6 Damit das Installationsscript, das wir später aufrufen, die notwendigen Datenbank-tabellen anlegen kann, müssen wir zuerst eine Datenbank erzeugen. Wechseln Sie dazu zur URL des MySQL-Administrations-Tools: http://localhost/phpMyAdmin/.

7 Erstellen Sie eine neue Datenbank namens news (Abbildung 7.3).

Abbildung 7.3: Erstellen einer neuen Datenbank

8 Starten Sie das Installationsscript, indem Sie die URL http://localhost/admin/install.php aufrufen und die Felder wie in Abbildung 7.4 angegeben füllen. Der Adminuser ist der Benutzer, der das News-System verwaltet und alle Rechte hat, um zum Beispiel News-Artikel zu löschen. Als Passwort wählen Sie am besten der Einfachheit halber goofy.

VORS

ICHT

!

Wenn Sie SimpleNews auf Ihrem Webserver einsetzen, wählen Sieeinen anderen Namen und ein anderes Kennwort für den Adminuser.goofy ist zu leicht zu erraten.

2-6496.book Page 124 Tuesday, November 19, 2002 3:47 PM

Page 125: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Die Installation von SimpleNews

125

Abbildung 7.4: Parameter für Installationsscript

9 Klicken Sie auf submit, um die Installation zu starten. Sie erhalten eine Bestätigungsseite.

10 Löschen Sie folgende Dateien im admin-Verzeichnis:

mkconfig.phpfill_emoticons.phpfill_icons.phpfill_freemailer.phpinstall.phpupgrade_160_to_161.phpupgrade_161_to_162.phpupgrade_162_to_163.phpupgrade_164_to_165.phpupgrade_166_to_167.php

2-6496.book Page 125 Tuesday, November 19, 2002 3:47 PM

Page 126: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

126

Gibt’s was Neues?

7.2 Das sind ja Neuigkeiten!Nun wollen wir SimpleNews ein bisschen Leben einhauchen, indem wir einen Test-Artikel bereitstellen.

1 Wechseln Sie zur Administrationsseite http://localhost/simpnews/admin/.

2 Loggen Sie sich als Adminuser (goofy) ein. Zunächst werden Sie sicherlich von dem ungewöhnlichen Farbspiel überrascht ...

3 Sie sehen jetzt die Administrationsseite, die beim ersten Anblick erschlagend viele Funktionen bietet (Abbildung 7.5).

Abbildung 7.5: Die Administrationsseite

4 Wir fangen ganz oben an: Klicken Sie auf den Link Kategorien im Bereich Allgemein.

5 Jeder News-Artikel sollte einer Kategorie zugeordnet sein. Also müssen wir erst einmal eine Kategorie erstellen. Klicken Sie auf den Link neue Kategorie.

2-6496.book Page 126 Tuesday, November 19, 2002 3:47 PM

Page 127: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Das sind ja Neuigkeiten!

127

6 In das Feld Kategoriename schreiben Sie Politik und klicken auf hinzufügen (Abbildung 7.6).

Abbildung 7.6: Neue Kategorie erstellen

7 Gehen Sie wieder ins Hauptmenü und wählen Sie den Link Newseinträge bearbeiten aus der Rubrik News.

8 Da wir einen News-Artikel zur Kategorie Politik hinzufügen wollen, müssen wir zuerst die Kategorie wechseln. Wählen Sie dazu aus der Liste die Kategorie Politik aus und klicken Sie auf wechseln (Abbildung 7.7).

Abbildung 7.7: Wechsel der Kategorie

2-6496.book Page 127 Tuesday, November 19, 2002 3:47 PM

Page 128: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

128

Gibt’s was Neues?

9 Nun können Sie einen neuen News-Artikel wie in Abbildung 7.8 gezeigt verfassen. Die Titelgrafiken sind vordefiniert, es können aber problemlos weitere hinzugefügt oder vorhandene gelöscht werden. Dazu müssen Sie lediglich die Dateien im Ver-zeichnis gfx\icons bearbeiten. Tippen Sie also einen von Ihnen gewünschten Text ein.

Abbildung 7.8: Neuen Artikel verfassen

10 Scrollen Sie ans Ende der Seite und klicken Sie auf den Link hinzufügen .

PROF

ITIP

P Vielleicht fragen Sie sich, was :lol: im Text des News-Artikels bedeutet.Das ist Chatter-Slang und meint laughing out loud (laut loslachen).SimpleNews kennt den Chatter-Slang und übersetzt ihn in Smileys. Siekönnen aber auch direkt die Smileys unter dem Feld News anklicken,um Sie in den Text einzufügen.

2-6496.book Page 128 Tuesday, November 19, 2002 3:47 PM

Page 129: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Anpassen des Designs

129

Das war’s. Sie haben Ihren ersten News-Artikel geschrieben. Den wollen Sie sich jetztnatürlich anschauen. Öffnen Sie dazu die URL http://localhost/simpnews/news.php?category=1.

Abbildung 7.9: Der News-Artikel aus der Benutzersichtweise

7.3 Anpassen des DesignsDie News-Seite sieht etwas altbacken aus, das wollen wir schleunigst ändern!

Alle Einstellungen, die Layout und Design betreffen, finden Sie im Menü Layout unterEinstellungen auf der Administrationsseite.

Wechseln Sie in dieses Untermenü. Auf der folgenden Seite können Sie bestimmen,welches Layoutschema verwendet werden soll. Zurzeit existiert nur ein Schema – siewissen schon, das farblich wenig ansprechende. Klicken Sie auf den Link neues Layout,um ein anderes Schema zu definieren. Sie gelangen zur Layout-Definitionsseite (Ab-bildung 7.10).

2-6496.book Page 129 Tuesday, November 19, 2002 3:47 PM

Page 130: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

130

Gibt’s was Neues?

Abbildung 7.10: Definieren eines neues Layoutschemas

Auch hier ist man beim ersten Anblick überwältigt von der Vielzahl der Optionen. Eslässt sich wirklich alles einstellen! Die einzelnen Hauptrubriken sind durch grüneÜberschriften voneinander getrennt, Überschriften von Unterrubriken sind in Blau-lila dargestellt.

1 Geben Sie dem Schema zunächst einen Namen. Schreiben Sie in das Feld ID den Namen Neu.

2 Um eine farblich etwas aufgeräumtere News-Seite zu erhalten, geben Sie folgende Werte ein:

In der Rubrik Überschrift :

Hintergrundfarbe: #CCCCCC

Schriftfarbe: #000000

2-6496.book Page 130 Tuesday, November 19, 2002 3:47 PM

Page 131: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Anpassen des Designs

131

3 In der Rubrik Kategorieliste kreuzen Sie bitte das Kontrollkästchen aktivieren an.

4 In der Rubrik News, Unterrubrik Überschrift :

Hintergrundfarbe: #777777

Schriftfarbe: #FFFFFF

5 In der Unterrubrik Text:

Hintergrundfarbe: #FFFFFF

Schriftfarbe: #000000

6 In der Rubrik Grafiken unter Seitenhintergrund: kein Eintrag

7 In der Rubrik Seitenlayout unter Hintergrundfarbe: #FFFFFF

Das Ergebnis sehen Sie in Abbildung 7.11.

Abbildung 7.11: Verändertes Seitenlayout

Spielen Sie selbst ein bisschen an den Farbeinstellungen herum, es macht Spaß!

2-6496.book Page 131 Tuesday, November 19, 2002 3:47 PM

Page 132: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

132

Gibt’s was Neues?

7.4 Darf’s ein bisschen mehr sein?Sie haben gesehen, das Grundprinzip von SimpleNews ist in der Tat simpel. Über dieAdministrationsseite lassen sich Kategorien und News-Beiträge erstellen, die dannmithilfe von Layoutschemas dargestellt werden.

Aber das ist noch lange nicht alles, was SimpleNews kann. Es bietet eine Vielzahl analternativen Darstellungsweisen für die News-Artikel. Ich möchte Ihnen einige davonvorstellen.

Zunächst gibt es ein paar Variationen der klassischen Darstellungsweise. Probieren Sieeinmal die URL http://localhost/simpnews/news3.php?category=1 aus (Abbildung 7.12)Die News werden hier tabellarisch angezeigt, aber nur die Schlagzeilen. Ähnliche Varia-tionen bieten die Scripts news2.php und news4.php.

Abbildung 7.12: Anzeige der News in Tabellenform

Es sind aber auch ganz andere, etwas aufregendere und dynamischere Darstellungs-weisen möglich.

VORS

ICHT

!

Damit Sie die Fähigkeiten sinnvoll testen können, fügen Sie der Kate-gorie Politik noch mindestens einen News-Beitrag Ihrer Wahl hinzu.

2-6496.book Page 132 Tuesday, November 19, 2002 3:47 PM

Page 133: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Darf’s ein bisschen mehr sein?

133

Es ist zum Beispiel möglich, die Neuigkeiten mithilfe eines JavaScript-Newsfaders dar-zustellen. Ein Newsfader blendet die News-Artikel periodisch nacheinander ein. Siekönnen ihn über die URL http://localhost/simpnews/js_newsfader.php?category=1 auf-rufen (Abbildung 7.13).

Abbildung 7.13: Der Newsfader

Ganz ähnlich arbeitet der JavaScript-Newsscroller. Statt die News einzublenden,scrollt er die Beiträge nacheinander über den Bildschirm. Die URL lautet: http://local-host/simpnews/js_newsscroller.php?category=1.

Für das nächste Beispiel müssen wir ein paar Anpassungen bei den Einstellungen aufder Adminsitrationsseite vornehmen.

1 Wechseln Sie zur Admin-Seite in das Layoutmenü für unser Farbschema.

2 Scrollen Sie nach unten bis zur Rubrik Newsticker, Unterrubrik angezeigte News (Abbildung 7.14). Tragen Sie in das Feld Zeitrahmen eine –1 ein.

VORS

ICHT

!Die nachfolgenden Beispiele funktionieren nur, wenn der BenutzerJavaScript und Java-Applets in seinem Browser aktiviert hat. Meis-tens ist das der Fall, da die beiden Technologien standardmäßig akti-viert sind.

2-6496.book Page 133 Tuesday, November 19, 2002 3:47 PM

Page 134: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

134

Gibt’s was Neues?

Abbildung 7.14: Parameter für den Newsticker

3 Wiederholen Sie den Eintrag für die Rubrik Newsscroller und Newstyper. Tragen Sie außerdem in beide Rubriken als Höhe den Wert 100 ein.

Jetzt sind Sie sicherlich schon gespannt, welche Funktionalitäten sich hinter Newsticker,Newsscroller und Newstyper verbergen. Der Newsticker scrollt News-Artikel von rechtsnach links über den Bildschirm: http://localhost/simpnews/newticker.php?category=1.

Der Newsscroller arbeitet wie der JavaScript-Newsscroller, aber das Scrolling ist etwasweicher, da es mithilfe eines Java-Applets realisiert wurde. Dafür muss allerdings dieJava-Laufzeitumgebung gestartet werden, was eine Verzögerung beim erstmaligenLaden der Seite bedeutet.

Der Newstyper letztendlich gibt die Neuigkeiten Buchstabe für Buchstabe aus, so alsob sie gerade eingetippt werden (Abbildung 7.15).

2-6496.book Page 134 Tuesday, November 19, 2002 3:47 PM

Page 135: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Darf’s ein bisschen mehr sein?

135

Abbildung 7.15: Der Newstyper

Zu guter Letzt noch ein Schmankerl: ein Newsscroller mit Sternenhintergrund. WechselnSie zur URL http://localhost/simpnews/starscroller.php?category=1 (Abbildung 7.16). DieParameter wie Höhe und Scrollgeschwindigkeit können Sie wieder über die altbekannteAdministrationsseite in der Rubrik Scroller mit Sternenhintergrund einstellen.

Abbildung 7.16: Der Sternenscroller

PROF

ITIP

P

Auch für den JavaScript-Newsfader und JavaScript-Newsscroller kön-nen Sie im Layoutmenü Einstellungen vornehmen, um zum Beispieldie Hintergrundfarbe oder die Schriftgröße zu ändern.

2-6496.book Page 135 Tuesday, November 19, 2002 3:47 PM

Page 136: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

136

Gibt’s was Neues?

7.5 News-Beiträge in die eigene Seite einbauenBisher haben Sie die News-Beiträge losgelöst von einem Seitenkontext gesehen. WennSie vorhaben, SimpleNews zu benutzen, wollen Sie es sicherlich in Ihre Seite vernünftigeinbinden. Dazu stehen Ihnen viele Wege zur Verfügung. Für die klassische Darstel-lungsweise ist es – wie sie bereits gesehen haben – möglich, die Farben an Ihre Websiteanzupassen. Sie können aber außerdem noch einen beliebigen Seitenkopf und -fuß be-stimmen, der HTML-Anweisungen enthalten kann:

1 Wechseln Sie zur Administrationsseite (http://localhost/simpnews/admin/).

2 Klicken Sie auf den Eintrag Layout aus im Untermenü Einstellungen und wählen Sie unser Test-Layoutschema.

3 Scrollen Sie bis zur Rubrik Seitenlayout.

4 Aktivieren Sie das Kontrollkästchen benutzerdefinierten Header aktivieren.

5 Schreiben Sie in den Textbereich beliebigen HTML-Code, zum Beispiel:

<center><h1>Peters tolle Homepage<h1><h3><i>Neuigkeiten</i></h3></center>

6 Bestätigen Sie Ihre Eingaben mit einem Klick auf aktualisieren.

Testen Sie die Darstellungsweise der Seite http://localhost/simpnews/news.php?cate-gory=1. Es sollte wie in Abbildung 7.17 aussehen.

VORS

ICHT

!

Geben Sie den Code ohne Zeilenumbrüche ein, sonst werden dieseUmbrüche in HTML-Tags umgesetzt.

2-6496.book Page 136 Tuesday, November 19, 2002 3:47 PM

Page 137: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

News-Beiträge in die eigene Seite einbauen

137

Abbildung 7.17: Individueller Seitenkopf

Die dynamischen Darstellungsweisen lassen sich durch PHP-Anweisungen in beliebigeSeiten einbinden. Sie können dabei die Kategorie als Variable bestimmen oder wie bis-her in der URL übergeben. Nehmen wir an, Sie hätten folgende einfache Seite:

<html> <h1>Meine Seite</h1> Die neuesten Neuigkeiten:</html>

Um z.B. den Newsticker hinzuzufügen, müssen Sie nur das entsprechende Scriptinkludieren:

<html> <h1>Meine Seite</h1> Die neuesten Neuigkeiten aus der Politik: <?php $category=1; include "newsticker.php"; ?></html>

2-6496.book Page 137 Tuesday, November 19, 2002 3:47 PM

Page 138: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

138

Gibt’s was Neues?

Das Ergebnis sehen Sie in Abbildung 7.18.

Abbildung 7.18: Seite mit eingebundenem Newsticker

Wenn Sie die News nur in einer kleinen Ecke Ihrer Seite übersichtlich darstellen wollen,bietet sich das Script hotnews.php an:

<html> <h1>Meine Seite</h1> Die neuesten Neuigkeiten aus der Politik: <?php $category=1; include "hotnews.php"; ?></html>

Diesmal sieht die Seite aus wie in Abbildung 7.19.

Abbildung 7.19: Das Hotnews-Script

2-6496.book Page 138 Tuesday, November 19, 2002 3:47 PM

Page 139: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

News-Beiträge in die eigene Seite einbauen

139

Zusammen mit den Einstellungsmöglichkeiten im Layoutmenü ergibt sich so einegroße Flexibilität, wie Sie die News-Beiträge auf Ihrer Seite präsentieren können. Dasist auch die große Stärke von SimpleNews gegenüber anderen Scripts.

Ergebnis dieses WorkshopsSie haben in diesem Workshop die vielfältigen Möglichkeiten kennen gelernt, die Ih-nen das Skript SimpleNews bietet, um Neuigkeiten auf Ihrer Website zu präsentieren.Nutzen Sie sie !

2-6496.book Page 139 Tuesday, November 19, 2002 3:47 PM

Page 140: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

2-6496.book Page 140 Tuesday, November 19, 2002 3:47 PM

Page 141: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Workshop 8

Schweigen ist Silber, Reden ist Gold

Durch das Internet Freunde finden

Chats sind „in“. Im Gegensatz zu E-Mails oder Foren ist man in direktem Kontakt mitanderen Surfern, die Dialoge sind spontan. Trotzdem bleibt eine gewisse Anonymität,da man über Schrift kommuniziert. Eines der interessantesten Dinge ist dabei, dassman auf alle möglichen (und unmöglichen) Leute trifft, die man sonst nie kennen ler-nen würde. Mir sind persönlich mehrere Leute bekannt, die über Chats Ihren Traum-partner kennen gelernt haben! Chats machen eine Website lebendiger, aber es ist nichtganz einfach, einen Chat erst mal in Schwung zu bekommen. Da die Chatter währendihrer Dialoge gleichzeitig online sein müssen, ist dies schwieriger zu erreichen als beiForen. Dabei kann Ihnen auch dieses Buch wenig helfen. In diesem Kapitel werde ichIhnen zeigen, dass es ganz einfach ist, einen Chat auf einer Webseite einzubinden.Dazu benutzen wir eines der vielen freien und kostenlos erhältlichen Chat-Scriptsnamens PHPOpenChat.

2-6496.book Page 141 Tuesday, November 19, 2002 3:47 PM

Page 142: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

142

Schweigen ist Silber, Reden ist Gold

Ergebnis dieses WorkshopsNach diesem Workshop werden Sie in der Lage sein, einen professionellen Chat in IhreWebsite zu integrieren.

2-6496.book Page 142 Tuesday, November 19, 2002 3:47 PM

Page 143: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Installation des Chats

143

8.1 Installation des Chats

Legen Sie ein Unterverzeichnis namens chat in Ihrem Webdokumentenordner an – imFalle von PHPTriad ist dies c:\apache\htdocs – und entpacken Sie das Zip-Archiv in dasneu angelegte Verzeichnis.

Die Script-Dateien enthalten eine webbasierte Installationsroutine, die alle nötigenDatenbanktabellen anlegt. Damit PHPOpenChat und sein Installationsscript korrektarbeiten, müssen Sie zu allererst den so genannten Include-Path in der PHP-Konfigu-rationsdatei php.ini ändern.

Gehen Sie dazu folgendermaßen vor:

1 Öffnen sie die PHP-Konfigurationsdatei php.ini in einem Texteditor. Die Datei finden Sie unter c:\apache\php.

2 Suchen Sie die Rubrik Paths and Directories und ändern Sie den Include-Pfad für Windows wie in Abbildung 8.1 gezeigt.

Abbildung 8.1: Ändern des Include-Pfads

3 Speichern sie die Datei und schließen Sie den Texteditor.

CD-R

OMAU

F DE

R

Wie immer finden Sie alles, was Sie brauchen, auf der CD-ROM. DasChat-Script verbirgt sich in einem Zip-Archiv namens phpopenchat-2.3.0.zip und liegt im Ordner \software\PHPOpenChat.

Im Internet finden Sie eine aktuelle Version unter http://www.ortelius.de/phpopenchat/.

2-6496.book Page 143 Tuesday, November 19, 2002 3:47 PM

Page 144: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

144

Schweigen ist Silber, Reden ist Gold

Damit sind die Vorarbeiten getan und wir können mit der eigentlichen Installationvon PHPOpenChat beginnen:

1 Starten Sie das Installationsscript, indem Sie in einem Browser die URL http://localhost/chat/html/admin/install.php aufrufen.

2 Sie sehen nun den ersten Bildschirm des PHPOpenChat-Installers (Abbildung 8.2). Geben Sie als Erstes die Nutzerkennung für den Datenbankzugriff auf MySQL ein. In unserem Fall nehmen wir den Benutzer donald mit Passwort donald.

VORS

ICHT

!Wenn Sie den Chat auf Ihrem Webspace installieren wollen, taucht einProblem auf: Die meisten Hoster werden Sie nicht die PHP-Konfigura-tionsdatei verändern lassen. Doch zum Glück lässt sich das mit einemkleinen Trick umgehen. Kopieren Sie einfach alle Dateien aus demincludes-Verzeichnis in die Verzeichnisse html, admin, chatmail undforum. Führen Sie dann das Installationsscript wie beschrieben aus undkopieren Sie anschließend die Datei defaults_inc.php aus dem Ordneradmin in die Ordner html, chatmail und forum. Aber Achtung: WennSie per Hand etwas in der Konfigurationsdatei defaults_inc.php verän-dern, müssen Sie sie wieder in alle Verzeichnisse kopieren.

Falls Ihr Hoster den Apache-Webserver benutzt, gibt es auch einenanderen, einfacheren Weg. Erstellen Sie in den Verzeichnissen admin,forum und chatmail jeweils eine Datei namens .htacces mit folgendemInhalt:

php_value include_path ".:../../includes"

Zusätzlich erstellen Sie im html-Verzeichnis eine Datei .htaccess mitdem folgenden Inhalt:

php_value include_path ".:../includes"

Der Apache-Webserver liest diese Datei in jedem Verzeichnis undführt die darin enthaltenen Befehle aus. In unserem Fall weisen wirihn an, den include-Pfad für PHP entprechend zu setzen. Wenn esnicht funktioniert, fragen Sie Ihren Hoster, ob er .htaccess-Dateienunterstützt.

2-6496.book Page 144 Tuesday, November 19, 2002 3:47 PM

Page 145: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Installation des Chats

145

Abbildung 8.2: Der Installer

3 Klicken Sie auf die Schaltfläche Continue. Wenn Sie einen Bildschirm wie in Abbildung 8.3 sehen, dann steht schon mal die Datenbankverbindung. Jetzt geht es darum, in welcher Datenbank die Chat-Daten gespeichert werden sollen. Wir wählen dazu eine neue Datenbank namens chat. Geben Sie also in das Feld new database den Namen chat ein und bestätigen Sie Ihre Auswahl mit Continue.

Abbildung 8.3: Auswählen der Datenbank

2-6496.book Page 145 Tuesday, November 19, 2002 3:47 PM

Page 146: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

146

Schweigen ist Silber, Reden ist Gold

4 Die beiden nächsten Installationsschritte benötigen keine Eingaben. Achten sie nur darauf, dass keine Fehlermeldungen erscheinen. Klicken Sie auf let’s go on und dann auf next Step.

5 Sie sind nun auf der letzten Seite der Installation (Abbildung 8.4). Hier können Sie ein paar grundlegende Dinge konfigurieren. Geben Sie zunächst einmal ein erstes Thema vor, über das sich die Chatter unterhalten sollen. Tragen Sie dazu in dem Feld Name of your first channel beispielsweise das Thema Australien ein. Als Nächstes wird unter der Rubrik Passphrase aus Sicherheitsgründen nach einer beliebigen Zeichenkette gefragt, die die Basis für die Verschlüsselung der Nick-names (Namen der chatter) bildet. Was Sie hier eingeben, ist ziemlich egal. Als Letztes stellen Sie noch die Sprache des Chats auf deutsch um.

Abbildung 8.4: Der letzte Installationsschritt

6 Klicken Sie auf Submit, um die Installation abzuschließen.

2-6496.book Page 146 Tuesday, November 19, 2002 3:47 PM

Page 147: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Ist da jemand?

147

8.2 Ist da jemand?Nach der anstrengenden Installation sind Sie wahrscheinlich sehr gespannt auf dieResultate. Schauen wir uns also einmal die Funktionsweise des Chats an. Wechseln Sieim Browser auf die URL http://localhost/chat/html/, um zum Login-Bildschrim desChats zu kommen (Abbildung 8.5).

Abbildung 8.5: Der Login-Bildschirm von PHPOpenChat

Jeder, der mitreden möchte, benötigt einen so genannten Nickname (Spitzname), unterdem seine Beiträge erscheinen. Kennen Sie den Film E-Mail für dich mit Tom Hanksund Meg Ryan? Hier verlieben sich die beiden Hauptdarsteller mit den SpitznamenNY152 und Shopgirl übers Internet. Ein guter Nickname verrät etwas über Sie und IhreInteressen oder Ihre Lebensanschauung, ohne Ihre wahre Identität preiszugeben.

Um den Chat zu testen, müssen Sie sich also erst einmal einen Spitznamen suchen undregistrieren:

1 Klicken Sie auf den Link ich möchte meinen Nick registrieren .

2 Sie sind jetzt auf der Registrationsseite (Abbildung 8.6). Geben Sie dort Ihren gewünschten Spitznamen, ein Passwort und eine E-Mail-Adresse ein. Alle anderen Felder sind optional.

2-6496.book Page 147 Tuesday, November 19, 2002 3:47 PM

Page 148: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

148

Schweigen ist Silber, Reden ist Gold

Abbildung 8.6: Die Registrierung eines neuen Chatters

3 Klicken Sie auf registrieren, um einen neuen Benutzer mit dem ausgesuchten Spitznamen zu erstellen.

Jetzt können Sie auf die Login-Seite zurückkehren und sich mit der soeben erstelltenBenutzerkennung anmelden. Und schon sind Sie mittendrin im Chat, der auf IhremTestsystem natürlich etwas langweilig ist, da Sie nur mit sich selbst reden können. Aberdafür wenigstens mal auf eine neue Art und Weise. Im oberen Bereich des Bildschirmssehen Sie die Ausgaben, also die Dialoge. Im unteren Bereich können Sie einen Texteingeben (Abbildung 8.7).

2-6496.book Page 148 Tuesday, November 19, 2002 3:47 PM

Page 149: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Ist da jemand?

149

Abbildung 8.7: Mittendrin im Chat

Wenn Sie ein Chat-Neuling sind, müssen Sie unbedingt den Chatter-Slang kennen ler-nen. Hier gibt es viel zu beachten, damit Sie sich nicht gleich als totales Greenhorn outen.Über den Link Hilfe bekommen Sie einige Informationen. Ganz wichtig sind zum Bei-spiel Smileys, um seine momentane Stimmung auszudrücken. Smileys kennen Sie viel-leicht schon aus E-Mails. :-) heißt „lachen“ und :-( heißt „traurig sein“. Wenn Sie dieseZeichen in Ihren Text einbauen, erscheinen in der Ausgabe echte grafische Smileys. Esgibt aber noch eine Menge anderer Zeichen, die von PHPOpenChat grafisch umgesetztwerden (Abbildung 8.8). Probieren Sie einmal ein paar aus und üben Sie den Chat-Slang,es macht Spaß :-))

2-6496.book Page 149 Tuesday, November 19, 2002 3:47 PM

Page 150: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

150

Schweigen ist Silber, Reden ist Gold

Abbildung 8.8: Zeichen, die grafisch umgesetzt werden

8.3 Die AdministrationPHPOpenChat hat eine eigene Administrationsseite, mit deren Hilfe Sie als Verant-wortlicher für einen Chat häufige Aufgaben erledigen können.

Mit dem Admin-Tool sind u.a. folgende Aktionen möglich:

■ Neue Chats zu bestimmten Themen (Channels) einrichten oder alte löschen

■ Paten festlegen, die aufpassen, dass alles in geordneten Bahnen verläuft

■ Rundschreiben an Chatter schicken, um Sie über Neuigkeiten auf dem Laufen-dem zu halten

Angenommen, Sie möchten einen zweiten Chat zum Thema Computerspiele einrich-ten. Sie wollen sich um diesen Chat kümmern und unverschämte oder nervige Chatterhinauswerfen können. Es dürfen aber nicht alle registrierten Chatter mitreden, son-dern nur ein kleiner Kreis. Das funktioniert wie folgt:

2-6496.book Page 150 Tuesday, November 19, 2002 3:47 PM

Page 151: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Die Administration

151

1 Wechseln sie zur URL der Administrationsseite: http://localhost/chat/html/admin/ (Abbildung 8.9).

Abbildung 8.9: Die Administrationsseite

2 Klicken Sie auf den Link Neuen Channel anlegen.

3 Füllen Sie die Felder analog zu Abbildung 8.10 aus. Indem Sie dem Channel ein Kennwort geben, können nur diejenigen Chatter den Chat-Raum betreten, die dieses Passwort kennen. Die Exit URL bestimmt, auf welche Seite der Benutzer kommt, wenn er den Chat verlässt.

2-6496.book Page 151 Tuesday, November 19, 2002 3:47 PM

Page 152: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

152

Schweigen ist Silber, Reden ist Gold

Abbildung 8.10: Erstellen eines neuen Channels

4 Klicken Sie auf Daten speichern, um den Channel zu erstellen.

5 Klicken Sie in der Menüleiste auf Administration der Paten, um zu bestimmen, wer andere Chatter rauswerfen darf.

6 Fügen Sie Ihren eigenen Spitznamen als Paten hinzu (Abbildung 8.11).

2-6496.book Page 152 Tuesday, November 19, 2002 3:47 PM

Page 153: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Chat-Hygiene

153

Abbildung 8.11: Paten definieren

Das war’s, Sie können jetzt den Chat testen!

Da Sie Pate sind, erscheint im unteren Menü des Chats der neue Link Paten-Funktion,mit dessen Hilfe Sie unerwünschte Chatter rauswerfen können.

8.4 Chat-HygieneEinen Weg, wie Sie Ihren Chat „sauber“ halten können, haben Sie jetzt bereits kennengelernt: die Patenfunktion. Doch was tun, wenn ein Pate gerade nicht online ist?

Folgende Gefahren können auftauchen:

■ Ein Chatter verbreitet schmutzige oder anzügliche Dinge, benimmt sich unmög-lich und beschimpft andere.

■ Ein Chatter nutzt die Gelegenheit, um auf eine Webseite mit von Ihnen nichtakzeptiertem Inhalt zu verweisen (URLs werden im Chat automatisch als Linkdargestellt).

■ Ein Chatter benimmt sich zwar gesittet, aber alle anderen Chatter finden ihn nervigund würden ihn gerne rauswerfen.

Leider kommt so etwas relativ häufig vor, da man ja nicht kontrollieren kann, wermitchattet. Aber PHPOpenChat bietet Techniken, wie man den Inhalt der Dialoge kon-trollieren kann. Ich möchte Ihnen anhand von ein paar Beispielen zeigen, wie das geht.

Nehmen wir zunächst einmal an, Sie sind ein extrem höflicher Mensch und möchtenin Ihrem Chat die Schimpfworte Mist, Scheiße und verdammt nochmal verbieten:

1 Wechseln Sie in das includes-Verzeichnis, auf dem Testsystem ist dies das Ver-zeichnis c:\apache\htdocs\chat\includes.

2-6496.book Page 153 Tuesday, November 19, 2002 3:47 PM

Page 154: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

154

Schweigen ist Silber, Reden ist Gold

2 Öffnen Sie die Datei defaults_inc.php in einem Texteditor. Dies ist die zentrale Konfigurationsdatei für PHPOpenChat.

3 Suchen Sie die Definition der verbotenen Wörter. Diese nennen sich NO_NO_WORDS. Ich möchte an dieser Stelle nicht wiedergeben, was da schon steht, denn sonst kommt das Buch möglicherweise auf den Index jugendgefähr-dender Schriften ...

4 Sie können beliebige weitere Wörter oder Satzteile der Liste hinzufügen, indem Sie die Worte mit einem senkrechten Strich trennen. Also:

$NO_NO_WORDS=“bisherige Wörter | Mist | Scheisse | verdammt nochmal“

5 Übrigens: Der senkrechte Strich ist auf einer deutschen Tastatur neben der (Y)-Taste in Kombination mit (AltGr) zu erreichen.

Wann immer jetzt ein Chatter eines dieser Wörter benutzt, erscheint stattdessen...Oops... auf dem Bildschirm.

Nun kann es immer noch sein, dass ein Chatter zwar keine unerwünschten Wörtermehr benutzt, aber trotzdem nervt oder unverschämt ist. Andere Chatter können ihndann ignorieren, also aus den Beiträgen ausblenden. Dabei wird der Störenfried nurfür den Ignorierer ausgeblendet, alle anderen sehen ihn aber noch. Diese Technik kann

VORS

ICHT

!

Die Dateien von PHPOpenChat wurden im UNIX-Format abgespei-chert, was bedeutet, dass die Zeilenumbrüche auf einem Windows-System nicht vorhanden sind. Deshalb wäre es sehr unkomfortabel,eine Datei mit dem Windows-Standard-Texteditor zu bearbeiten.Benutzen Sie einen professionellen Texteditor wie UltraEdit, Textpadoder JEdit. Sollten Sie keinen installiert haben, finden Sie auf der CD-ROM unter \software\Texteditoren eine Testversion von Textpadsowie den kostenlosen, sehr guten Texteditor JEdit. Für Letzterenmüssen Sie allerdings eine Java-Laufzeitumgebung installiert haben.

VORS

ICHT

!

Je mehr Worte Sie verbieten, desto langsamer wird der Chat, da jederBeitrag nach den Unwörtern durchsucht werden muss. Außerdemfinden Chatter schnell Alternativen, wenn Sie merken, dass ein Wortverboten ist.

2-6496.book Page 154 Tuesday, November 19, 2002 3:47 PM

Page 155: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Chat-Hygiene

155

auch dann angewendet werden, wenn man sich nur auf bestimmte Gesprächspartnerkonzentrieren möchte.

Und so ignoriert man:

1 Wählen Sie aus dem Chat-Menü den Link Einladen/Ignorieren.

2 Klicken Sie im auftauchenden Fenster auf den grünen Link Chatter Ignorieren.

3 In der rechten Auswahlbox sehen Sie alle zurzeit am Chat beteiligten Benutzer. Durch Klick auf den Linkspfeil können Sie einen Benutzer zur Auswahlbox Ignorierte Chatter übertragen und damit ignorieren (Abbildung 8.12).

Abbildung 8.12: Ignorieren anderer Chatter

PROF

ITIP

P Generell ist es aber – wie in persönlichen Gesprächen auch – eherunhöflich, jemanden zu ignorieren. Für private Gespräche besteht inPHPOpenChat die Möglichkeit, in einen privaten Raum zu gehen. Fürjeden neuen Chatter wird automatisch ein persönlicher Channel ein-gerichtet, der den Namen des Chatters trägt. Sie finden ihn in derChannel-Auswahlliste.

2-6496.book Page 155 Tuesday, November 19, 2002 3:47 PM

Page 156: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

156

Schweigen ist Silber, Reden ist Gold

Wie die rote Hinweismeldung in Abbildung 8.12 bereits andeutet, wird ein Chatterautomatisch gesperrt, wenn eine bestimmte Anzahl Benutzer ihn ignorieren.

8.5 Anpassen des LayoutsSo, nun können Sie den Chat installieren und administrieren und kennen auch denChat-Knigge. Sicherlich wollen Sie nun einen Chat zu Ihrer Homepage hinzufügen.Dazu sollte er sich aber nicht allzu sehr von Ihrem Seitendesign absetzen, sondern sichmöglichst nahtlos integrieren. Zum Glück ist das mit PHPOpenChat machbar, Siemüssen allerdings ein wenig in die HTML-Untiefen abtauchen. Ich werde Ihnenanhand von Beispielen zeigen, wie Sie das Aussehen des Chats bestimmen können.

Zunächst wollen wir das User-Interface etwas aufgeräumter gestalten, denn weniger istmanchmal mehr. Dazu schalten wir einige der Menüs einfach aus.

Öffnen Sie die Konfigurationsdatei defaults_inc.php und suchen Sie den Bereich, denSie in Abbildung 8.13 sehen. Die Parameter entsprechen den Menüs und Sie könnensie über die Werte TRUE oder FALSE ein- bzw. ausschalten. Als Konsequenz derÄnderungen sehen Sie in Abbildung 8.14 ein sehr vereinfachtes Chat-Menü.

Abbildung 8.13: Menüpunkte auswählen

PROF

ITIP

P

Die Anzahl der zum Sperren notwendigen Ignorierer können Sie in derKonfigurationsdatei defaults_inc.php einstellen. Der zugehörige Parame-ter nennt sich $KICK_COUNT und ist standardmäßig auf 15 eingestellt.

2-6496.book Page 156 Tuesday, November 19, 2002 3:47 PM

Page 157: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Anpassen des Layouts

157

Abbildung 8.14: Das vereinfachte Chatmenü

Auch die Hintergrund- und die Textfarbe können Sie sehr einfach verändern.

1 Ändern Sie für die Textfarbe den Parameter DEFAULT_TEXT_COLOR in der Konfigurationsdatei um in den gewünschten Wert. Die Farbe wird in HTML-Notation angegeben (siehe Anhang). Nehmen Sie beispielsweise Blau: #0000ff.

2 Die Hintergrundfarbe wird für jeden Channel einzeln bestimmt, und zwar über die Administrationsseite. Wechseln Sie also zur URL http://localhost/chat/html/admin/ und klicken Sie auf den bearbeiten-Link des Channels Australien.

3 Schreiben Sie in das Feld Hintergrundfarbe den Wert #ffffff (Weiß) und in das Feld Farbe des Spitznamens den Wert #0000ff für Blau (Abbildung 8.15).

Abbildung 8.15: Anpassen der Farben

2-6496.book Page 157 Tuesday, November 19, 2002 3:47 PM

Page 158: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

158

Schweigen ist Silber, Reden ist Gold

4 Bestätigen Sie Ihre Änderungen durch einen Klick auf die Schaltfläche Daten speichern.

Das veränderte Farbschema erzeugt einen Chat wie in Abbildung 8.16 dargestellt.

Abbildung 8.16: Chat in einfachem Weiß

Ein eigenes Login-FormularEs wäre doch schön, wenn sich auf Ihrer Homepage ein Login-Formular für den Chatbefinden würde, sodass Sie gänzlich auf den PHPOpenChat-Login-Bildschirm ver-zichten können. Dazu ist ein wenig Programmierarbeit nötig. Aber zum Glück für Siehabe ich ein fertiges Script schon vorbereitet.

CD-R

OMAU

F DE

R Ein ganz einfaches Login-Formular finden Sie auf der CD-ROMunter \software\PHPOpenChat\simple_login.php.

2-6496.book Page 158 Tuesday, November 19, 2002 3:47 PM

Page 159: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Anpassen des Layouts

159

Das Script lautet wie folgt:

<?include ("login_inc.php");include("defaults_inc.php");?><html> <body> <form action="index.<?=$FILE_EXTENSION?>" method="post"> Spitzname: <input name="nick" type="text"> <br> Passwort: <input type="password" name="password"> <br> <input name="action" type="submit" value="Los" > <input type=hidden name="<?=session_name()?>" value="<?=session_id()?>" > <input type=hidden name="entry" value="Australien" > </form> </body></html>

Die Ausgabe ist nicht besonders spektakulär (Abbildung 8.17).

Abbildung 8.17: Einfaches Login

2-6496.book Page 159 Tuesday, November 19, 2002 3:47 PM

Page 160: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

160

Schweigen ist Silber, Reden ist Gold

Das Entscheidende ist hierbei der HTML-Sourcecode zwischen den beiden form-Tags. Diesen Code können Sie irgendwo auf Ihrer Homepage einbinden. Vergessen Sieaber nicht die include-Anweisungen.

Die Template-DateienWenn Sie zu den ewig unzufriedenen Perfektionisten gehören, könnte es sein, dass Ih-nen die bisher dargestellten Möglichkeiten der Anpassung nicht reichen. Auch dies istkein Problem, denn PHPOpenChat bietet auch für Sie etwas Passendes: die Template-Dateien.

In diesen Dateien, erkennbar durch die Endung _tpl.php, wird das Layout vieler Seitenoder Seitenbestandteile durch HTML und Stylesheet-Anweisungen festgelegt. Es ge-hört natürlich eine gehörige Portion Know-how dazu, diese Templates anzupassen,aber vielleicht gehören Sie ja zu den HTML/CSS-Hackern. Selbst wenn Sie noch großeEhrfurcht vor HTML haben, können Sie ein wenig herumprobieren. Vergessen Sie indiesem Fall nur nicht, eine Sicherheitskopie der Originaldatei zu machen, auf die Sieim Notfall zurückgreifen können.

Legen wir los! Mithilfe der Templates wollen wir eine kosmetische Verbesserung vor-nehmen. Vielleicht ist Ihnen auch schon aufgefallen, dass die Input-Zeile, in die SieIhren Betrag eintippen, sehr klein ist. Der Text ist dadurch schlecht lesbar. Um dies zuändern, müssen wir nur das entsprechende Template und die HTML/CSS-Anweisun-gen zur Erzeugung des Eingabefeldes verändern:

VORS

ICHT

!

Vermutlich steht Ihre Homepage in einem anderen Verzeichnis alsdie Chat-Dateien. Damit der oben stehende Code funktioniert, müs-sen Sie im action-Attribut den Pfad zum Chat-Verzeichnis angeben,zum Beispiel:

<form action="chat/html/index.<?=$………

Die include-Anweisungen funktionieren ohne Modifikation, weil Sieden include-Pfad für PHP in der Konfigurationsdatei php.ini ange-passt haben.

2-6496.book Page 160 Tuesday, November 19, 2002 3:47 PM

Page 161: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Anpassen des Layouts

161

1 Öffnen Sie mit einem Texteditor die Datei input_tpl.php im Verzeichnis c:\apache\htdocs\chat\includes und gehen Sie zur Zeile 46 (Abbildung 8.18).

Abbildung 8.18: Bearbeiten des input-Templates

2 Löschen Sie in dieser Zeile die gesamte Style-Anweisung für das Eingabefeld, also die folgenden Zeichen:

STYLE="font-size: 10px;font-family:MONOSPACE;"

Damit wird ab sofort das Standarddesign für ein Eingabefeld benutzt, sodass derText besser lesbar wird.

3 Speichern Sie die Datei und testen Sie das Ergebnis der Änderung.

PROF

ITIP

P Sie finden alle Templates im include-Verzeichnis. Wenn Sie sichzutrauen, die Templates zu verändern, ist der Schritt allerdings nichtgroß, die tatsächlichen PHP-Dateien zu ändern. Insbesondere dieAnpassung der Datei frame_set.php im Verzeichnis html ist sinnvoll. Indieser Datei wird die Größe der einzelnen Frames des Chats (Ausgabe-bereich, Eingabebereich, Menübereich) festgelegt.

2-6496.book Page 161 Tuesday, November 19, 2002 3:47 PM

Page 162: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

162

Schweigen ist Silber, Reden ist Gold

Ergebnis dieses WorkshopsSie haben gelernt, wie man PHPOpenChat installiert, konfiguriert und bedient. Damitkönnen Sie jetzt einen Chat auf Ihrer Homepage realisieren.

2-6496.book Page 162 Tuesday, November 19, 2002 3:47 PM

Page 163: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Workshop 9

Jede Stimme zählt

Was wäre eine Demokratie ohne Wahlen und Umfragen?

Es sind die netten Kleinigkeiten, die Websites interessant machen. Umfragen gehörendazu, sie machen die Site „offener“. Man hat das Gefühl, mit vielen anderen Leuten zuinteragieren und kann wertvolle Informationen gewinnen. Auch für dieses Anwen-dungsgebiet gibt es fertige PHP-Scripts. Die Befragung von Surfern ist damit so ein-fach wie noch nie: Ob Musik, Sport oder Politik, ständig fordern so genannte Votings(Umfragen) zum Klicken auf.

Als Beispiel für solche Applikationen wird in diesem Kapitel das kostenlose SkriptAdvanced Poll vorgestellt, das das Erstellen diverser Umfragen zu einem Kinderspielmacht.

VORS

ICHT

!

Kostenlos ist Advanced Poll laut Lizenzbedingungen nur dann, wennSie es für private, nichtkommerzielle Zwecke einsetzen. Ansonstenmüssen Sie es registrieren lassen.

2-6496.book Page 163 Tuesday, November 19, 2002 3:47 PM

Page 164: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

164

Jede Stimme zählt

Ergebnis dieses WorkshopsNach dem Durcharbeiten dieses Workshops werden sie in der Lage sein, Umfragen inIhre Homepage zu integrieren.

9.1 InstallationUnd so installieren Sie Advanced Poll:

1 Legen Sie ein Unterverzeichnis namens vote auf Ihrem Webserver an, im Falle von PHPTriad unter \apache\htdocs.

2 Wechseln Sie in das Verzeichnis software\AdvanvedPoll auf der CD-ROM.

3 Extrahieren Sie das Archiv pollphp.zip in das im ersten Schritt erzeugte Verzeichnis und wechseln Sie in dieses Verzeichnis.

4 Öffnen Sie die Datei include\config.inc.php in einem Texteditor und ändern Sie die Einstellungen für die Datenbankanbindung:

$POLLDB["dbName"] = "meineDB";$POLLDB["host"] = "localhost";$POLLDB["user"] = "donald";$POLLDB["pass"] = "donald";$POLLDB["class"] = "class_mysql.php";

2-6496.book Page 164 Tuesday, November 19, 2002 3:47 PM

Page 165: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Installation

165

5 Öffnen Sie einen Browser und gehen sie auf die Seite http://localhost/vote/db/install.php (Abbildung 9.1).

Abbildung 9.1: Der Installationsassistent von Advanced Poll

6 Klicken Sie auf Next, um mit der Installation zu beginnen. Der Assistent ist üblichen Windows- Installationsassistenten nachempfunden.

7 Bestätigen Sie, dass Sie den Lizenzbestimmungen zustimmen, und fahren Sie mit Klick auf Next fort.

8 Die notwendigen Tabellen werden nun in MySQL angelegt und mit Demo-Daten gefüllt.

9 Nachdem alle Tabellen erfolgreich angelegt wurden, müssen Sie einen Benutzer anlegen, der Administrationsrechte hat. Über diesen Admin-User können Sie dann später Advanced Poll bequem bedienen. Wählen Sie als Benutzernamen goofy mit gleichnamigem Passwort (Abbildung 9.2) und klicken Sie auf Next.

2-6496.book Page 165 Tuesday, November 19, 2002 3:47 PM

Page 166: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

166

Jede Stimme zählt

Abbildung 9.2: Anlegen des Admin-Users

10 Die Installation ist damit beendet. Klicken Sie auf Done, um auf eine Demoseite zu gelangen, wo Sie einen ersten Eindruck von der Funktionalität von Advanced Poll bekommen können (Abbildung 9.3).

2-6496.book Page 166 Tuesday, November 19, 2002 3:47 PM

Page 167: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Installation

167

Abbildung 9.3: Demoseite mit Umfragen

Versuchen Sie es einfach einmal! Wählen Sie ein Betriebssystem aus und klicken Sieauf Vote. Sie sollten dann die Ergebnisse der Umfrage sehen.

Wie Sie vielleicht schon festgestellt haben, sind die Umfragen in English. Doch zumGlück ist Advanced Poll multilingual, Sie können aus einer Vielzahl von unterstütztenSprachen wählen.

PROF

ITIP

P

Advanced Poll hat eine Funktion, die es unmöglich macht, an dersel-ben Umfrage mehrfach teilzunehmen. Sobald Sie abgestimmt haben,bekommen Sie nur noch die Ergebnisse angezeigt, wenn Sie wiederauf die Umfrageseite gehen. So wird es Betrügern schwer gemacht, dieIhre Meinung „durchboxen“ wollen und einfach stundenlang abstim-men oder ein Skript dafür schreiben. Advanced Poll benutzt Cookies(kleine Dateien mit Nutzerdaten, die lokal gespeichert wird), um sichzu merken, von welchem Rechner bereits eine Stimme abgegebenwurde. Wenn Sie das Cookie löschen, dürfen Sie natürlich auch wie-der neu abstimmen ...

2-6496.book Page 167 Tuesday, November 19, 2002 3:47 PM

Page 168: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

168

Jede Stimme zählt

9.2 Erstellen neuer Umfragen Advanced Poll beinhaltet ein komfortables Administrationstool, mit dessen Hilfe Siekein Programmierer sein müssen, um Umfragen in Ihre Website zu integrieren. Umauf die Startseite des Admin-Tools zu gelangen, öffnen Sie einen Browser und rufenSie die URL http://localhost/vote/db/admin/ auf.

Als Erstes wollen wir die Sprache umstellen:

1 Rufen Sie die URL http://localhost/vote/db/admin/ auf und loggen Sie sich mit dem Benutzernamen goofy ein. Sie gelangen in das Hauptmenü der Advanced-Poll-Administration (Abbildung 9.4).

Abbildung 9.4: Das Hauptmenü der Advanced-Poll-Administration

2 Das Admin-Tool ist einer Windows-Oberfläche nachempfunden. Wählen Sie aus dem Menü den Punkt General Settings.

3 Stellen Sie unter Language die Sprache german ein und klicken Sie auf Submit Settings am Ende der Seite. Alle weiteren Seiten werden jetzt in deutscher Sprache dargestellt.

2-6496.book Page 168 Tuesday, November 19, 2002 3:47 PM

Page 169: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Erstellen neuer Umfragen

169

Abbildung 9.5: Einstellen der Sprache

Damit wir loslegen können, müssen wir zunächst noch ein bisschen aufräumen unddie vorhandenen Beispielumfragen löschen. Wählen Sie dazu aus dem Menü denPunkt Umfragen. Am rechten Seitenrand haben Sie in der Spalte Aktion die Möglich-keit, bestehende Umfragen zu löschen. Löschen Sie die drei Beispielumfragen.

Um nun eine neue Umfrage anzulegen, gehen Sie folgendermaßen vor:

1 Gehen Sie in das Hauptmenü der Admin-Seite und wählen Sie General Settings. Sie gelangen wieder auf die Seite, auf der Sie die Sprache umgestellt haben.

2 Scrollen Sie etwas nach unten bis zur Rubrik Verschiedenes. Stellen Sie die Anzahl der Optionen, die bei einer Umfrage zur Auswahl stehen sollen, auf 3 ein (Abbil-dung 9.6). Aktivieren Sie außerdem unter Anzeige die Option Stimmen, damit bei den Umfrageergebnissen die tatsächliche Anzahl von Stimmen und keine Prozent-werte angegeben werden.

2-6496.book Page 169 Tuesday, November 19, 2002 3:47 PM

Page 170: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

170

Jede Stimme zählt

Abbildung 9.6: Das Verändern globaler Parameter

3 Bestätigen Sie Ihre Änderungen mit Klick auf Einstellungen speichern.

4 Wählen Sie aus dem Hauptmenü den Punkt Neue Umfrage erstellen. Sie gelangen auf eine Seite, auf der Sie die verschiedenen Einstellungen vornehmen können.

5 Tippen Sie als Frage „Was essen Sie lieber?“ ein. Als Optionen geben Sie an: Pizza, Schnitzel, Döner . Für jede Option lässt sich eine Farbe wählen, die für die grafische Auswertung benutzt wird (Abbildung 9.7). Aktivieren Sie das Kontrollkästchen Kommentare erlauben, damit Benutzer Bemerkungen zu der Umfrage machen können.

2-6496.book Page 170 Tuesday, November 19, 2002 3:47 PM

Page 171: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Einbetten der Umfrage

171

Abbildung 9.7: Die Daten der neuen Umfrage

6 Wenn Sie alles eingetragen haben, klicken Sie auf Neue Umfrage erstellen und Sie gelangen auf die Übersichtsseite, wo Ihre neue Umfrage erscheint. Merken sie sich die ID der neuen Umfrage, Sie brauchen sie später, um die Umfrage in Ihre Webseite einzubauen. Die ID wird vermutlich den Wert 4 haben, da schon drei Umfragen vorhanden sind..

So, damit haben Sie die Umfrage erstellt. Das ist aber erst die halbe Miete, schließlichwollen Sie diese Umfrage ja Benutzern zugänglich machen. Wie das geht, erfahren Sieim nächsten Unterkapitel.

9.3 Einbetten der UmfrageIn der Advanced Poll-Installation ist leider keine einfache Vorlage dabei, die Ihnenzeigt, wie man Umfragen in HTML-Seiten einbettet. Also müssen wir die Ärmel hoch-krempeln und ein bisschen programmieren. Zunächst gibt es ein paar Dinge, die im-mer ausgeführt werden müssen, wenn Sie Advanced Poll auf Ihren Seiten benutzenwollen. Diese Anweisungen, die immer dieselben sind, wollen wir in einer eigenstän-digen Datei namens poll_init.php ablegen.

2-6496.book Page 171 Tuesday, November 19, 2002 3:47 PM

Page 172: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

172

Jede Stimme zählt

1 Öffnen Sie einen Texteditor und legen Sie eine Datei namens poll_init.php in Ihrem Advanced-Poll-Verzeichnis \apache\htdocs\vote\db an.

2 Als Erstes muss die Variable $poll_path definiert werden, die den Pfad zum Advanced-Poll-Verzeichnis enthält.

<?php$poll_path = "c:\apache\htdocs\vote\db";

3 Danach muss die Datei poll_cookie.php eingebunden werden.

require "./poll_cookie.php";

4 Jetzt wird mit der header-Anweisung ein HTTP-Header geschickt, der den Browser anweist, die Seite nicht in seinem Cache zu speichern. Das ist sinnvoll, da Sie ja immer die neuesten Umfrageergebnisse sehen wollen und keine zwischengespeicherte Seite.

header("Expires: Mon, 01 Jan 2000 05:00:00 GMT");header("Last-Modified: ".gmdate("D, d M Y H:i:s")."GMT");header("Cache-Control: no-cache, must-revalidate");header("Pragma: no-cache");

5 Als Nächstes werden ein paar notwendige Dateien eingebunden:

require $poll_path."/include/config.inc.php";require $poll_path."/include/$POLLDB[class]";require $poll_path."/include/class_poll.php";

CD-R

OMAU

F DE

R Wenn Sie sich die Mühe nicht machen wollen, die Datei selbst zuerstellen, können Sie sie auch von der CD-ROM kopieren. Sie findenSie im Verzeichnis \software\AdvancedPoll.

VORS

ICHT

!

Wenn Sie Advanced Poll auf Ihrem Webspace installieren, wird derPfad anders lauten. Dann müssen Sie die Datei entsprechend anpassen.

2-6496.book Page 172 Tuesday, November 19, 2002 3:47 PM

Page 173: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Einbetten der Umfrage

173

6 Jetzt sind alle Vorarbeiten getan und das eigentliche Programm kann starten. Es werden die nötigen Objekte erzeugt und eine Verbindung zur Datenbank wird hergestellt:

$CLASS["db"] = new polldb_sql;$CLASS["db"]->connect();

$php_poll = new poll();?>

7 Speichern Sie die Datei.

Hier noch einmal das vollständige Listing:

<?php$poll_path = "c:\apache\htdocs\vote\db";

require "./poll_cookie.php";

header("Expires: Mon, 01 Jan 2000 05:00:00 GMT");header("Last-Modified: ".gmdate("D, d M Y H:i:s")."GMT");header("Cache-Control: no-cache, must-revalidate");header("Pragma: no-cache");

require $poll_path."/include/config.inc.php";require $poll_path."/include/$POLLDB[class]";require $poll_path."/include/class_poll.php";

$CLASS["db"] = new polldb_sql;$CLASS["db"]->connect();

$php_poll = new poll();?>

Wenn Sie die soeben erstellte Datei zur Verfügung haben, dann ist der Rest, nämlichdas Anzeigen einer Umfrage auf Ihrer Webseite, ein leichte Sache.

Alles, was Sie noch tun müssen, ist die Datei poll_init.php einzubinden und dann denBefehl zum Anzeigen einer Umfrage aufzurufen. Der Befehl lautet:

echo $php_poll->poll_process(4);

4 ist die ID der Umfrage, die Sie anzeigen wollen.

2-6496.book Page 173 Tuesday, November 19, 2002 3:47 PM

Page 174: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

174

Jede Stimme zählt

Nachfolgend sehen Sie ein einfaches Beispiel, das eine Ausgabe wie in Abbildung 9.8erzeugt:

<?php include "c:\apache\htdocs\vote\db\poll_init.php"; ?><html><body> <h1>Umfrage</h1> <?php echo $php_poll->poll_process(4); ?></body></html>

Abbildung 9.8: Eine einfache Umfrage

Um das Prinzip deutlich zu machen, lassen Sie uns noch eine neue Umfrage erstellenmit folgenden Daten:

Frage: Wie oft treiben Sie Sport?

Optionen:

Mindestens einmal pro Woche

Mindestens einmal pro Monat

Mindestens einmal pro Jahr

Wenn Sie sich diese Umfrage auf der Admin-Seite in der Übersicht anschauen, dannwird sie vermutlich die ID 5 haben.

2-6496.book Page 174 Tuesday, November 19, 2002 3:47 PM

Page 175: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Einbetten der Umfrage

175

Um die neue Umfrage in das obige Beispiel einzubetten, können Sie das Listing zumBeispiel folgendermaßen abändern:

<?php include "c:\apache\htdocs\vote\db\poll_init.php"; ?><html><body> <h1>Umfrage</h1> <table> <tr> <td> <?php echo $php_poll->poll_process(4); ?> </td> <td> <?php echo $php_poll->poll_process(5); ?> </td> </tr> </table></body></html>

Die beiden Umfragen werden in einer HTML-Tabelle nebeneinander angezeigt (Abbil-dung 9.9).

Abbildung 9.9: Zwei Umfragen auf einer Webseite

2-6496.book Page 175 Tuesday, November 19, 2002 3:47 PM

Page 176: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

176

Jede Stimme zählt

9.4 Anpassen des ErscheinungsbildesSie können jetzt Umfragen erstellen und auch anzeigen, aber auch hier entsteht dasProblem, dass Ihnen das Design der Umfrage vielleicht nicht gefällt oder nicht zu IhrerWebseite passt.

Um dieses Problem möglichst elegant zu lösen, arbeitet Advanced Poll mit so genann-ten Templates, also Vorlagen, die benutzt werden, um das Erscheinungsbild der Um-frage zu beeinflussen. Die Vorlagen benutzen dazu HTML- und PHP-Anweisungen.Sie werden in diesem Unterkapitel lernen, wie Sie Templates erstellen und anpassenkönnen, um das Design Ihrer Umfragen individuell anzupassen.

Advanced Poll hat schon ein paar fertige Templates mitinstalliert. Schauen wir unszunächst einmal an, wie man diese Templates einer Umfrage zuweisen kann. Der dazunötige Befehl lautet:

$php_poll->set_template_set("template_name");

Ändern Sie also das Listing aus dem letzten Unterkapitel wie folgt ab, um die beidenUmfragen mit zwei verschiedenen Designs zu versehen:

<?php include "c:\apache\htdocs\vote\db\poll_init.php"; ?><html><body> <h1>Umfrage</h1> <table> <tr> <td> <?php $php_poll->set_template_set("plain"); echo $php_poll->poll_process(4); ?> </td> <td> <?php $php_poll->set_template_set("simple"); echo $php_poll->poll_process(5);

PROF

ITIP

P Sie können auch ohne Templates kleinere Änderungen am Design vor-nehmen. Wählen Sie dazu aus dem Menü den Punkt Allgemeine Ein-stellungen. Hier können Sie in dem Bereich Tabellen, Schrift und Farbemit den Einstellungen herumspielen.

2-6496.book Page 176 Tuesday, November 19, 2002 3:47 PM

Page 177: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Anpassen des Erscheinungsbildes

177

?> </td> </tr> </table></body></html>

Die Parameter plain und simple sind die Namen zweier mitgelieferter Templates.Das Ergebnis sehen Sie in Abbildung 9.10.

Abbildung 9.10: Unterschiedliche Design-Vorlagen ( links plain, rechts simple)

Sie sind natürlich nicht auf die mitgelieferten Templates angewiesen, sondern Sie kön-nen einfach Ihre eigenen schreiben. Wie dies funktioniert, möchte ich Ihnen anhandeines Beispiels zeigen:

1 Gehen Sie auf die Administrationsseite von Advanced Poll (http://localhost/vote/db/admin/).

2 Wählen Sie den Punkt Templates aus dem Menü.

3 Am rechten Fensterrand können Sie jetzt die Vorlage auswählen, die Sie verän-dern oder ansehen möchten (Abbildung 9.11).

2-6496.book Page 177 Tuesday, November 19, 2002 3:47 PM

Page 178: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

178

Jede Stimme zählt

Abbildung 9.11: Die Template-Verwaltung

4 Klicken Sie auf den Link Neues Template Set.

5 Geben Sie als Namen für das Template meinDesign ein (Abbildung 9.12) und kli-cken Sie auf Speichern.

VORS

ICHT

!

Vergessen Sie nicht, die kleine Grafik neben der Optionsliste zu kli-cken, nachdem Sie eine Vorlage ausgewählt haben. Andernfalls über-schreiben Sie das derzeit ausgewählte Template.

2-6496.book Page 178 Tuesday, November 19, 2002 3:47 PM

Page 179: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Anpassen des Erscheinungsbildes

179

Abbildung 9.12: Erstellen eines neuen Templates

6 Wählen Sie aus der Liste am rechten Fensterrand das soeben angelegte Template aus und klicken Sie auf die kleine Grafik neben der Liste.

7 Wenn Sie auf der richtigen Seite sind, sehen Sie nun drei leere Textbereiche mit den Überschriften display_head, display_loop und display_foot. Diese Bereiche definieren,

■ was als Überschrift in der Umfrage steht (display_head),

■ wie die verschiedenen Optionen dargestellt werden (display_loop),

■ wie abschließende Elemente, zum Beispiel die Wähl-Schaltfläche, aussehen(display_foot).

Diese Textbereiche werden wir nacheinander füllen, um ein schlichtes Design zu ver-wirklichen. Die Umfrage soll in vier Zeilen ohne irgendwelchen Schnickschnack dar-gestellt werden. Die erste Zeile enthält die Frage, die zweite die Optionen, die dritteden Button zum Abstimmen und die vierte Zeile den Link zu den Ergebnissen der Um-frage. Also, los geht’s:

1 Tippen Sie folgende Zeilen in den Textbereich display_head:

<form method="post" action="$this->form_forward"><div style="background-color: #DDDDDD"> <b>$question</b> <br>

Die Variable $question beinhaltet dabei die Frage.

2-6496.book Page 179 Tuesday, November 19, 2002 3:47 PM

Page 180: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

180

Jede Stimme zählt

2 Als Nächstes füllen Sie den Textbereich display_loop:

<input type="radio" name="option_id" value="$data[option_id]">$data[option_text]

Hier wird ein HTML-Radio-Button definiert. Die notwendigen Daten wie Options-ID und Text enthält das Array $data. Dieser Code wird so lange wiederholt, wieDaten vorhanden sind. In unserem Fall also drei Mal, sodass wir als Ergebnis dreiRadio-Buttons erhalten, die nebeneinander liegen.

3 Jetzt fehlt nur noch der Textbereich display_foot. Der Inhalt ist etwas länger, weil hier auch der Link zu den Ergebnissen definiert ist:

<br><input type="submit" value="Abstimmen" class="input" name="submit"><input type="hidden" name="action" value="vote"><input type="hidden" name="poll_ident" value="$poll_id"><br><a href="$this->form_forward?action=results&poll_ident=$poll_id"> Ergebnisse</a></form></div>

4 Klicken Sie auf Speichern.

PROF

ITIP

P Vielleicht haben Sie sich gewundert, dass Sie eine PHP-Variable wie$question ohne die umschließenden Skript-Tags <?php ... ?>benutzen können. Das ist hier möglich, weil PHP die Templates nocheinmal parst und erkennt, dass Variablen darin enthalten sind. In einernormalen HTML-Seite würde das aber nicht funktionieren.

2-6496.book Page 180 Tuesday, November 19, 2002 3:47 PM

Page 181: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Anpassen des Erscheinungsbildes

181

Über die Vorschau-Funktion im linken oberen Fensterbereich können Sie sich ein Bildmachen, welche Auswirkungen Ihre Änderungen oder neu erstellten Templates haben(Abbildung 9.13).

Abbildung 9.13: Die Vorschau-Funktion

Sie haben nun ein Erscheinungsbild für die Umfrage festgelegt. Leider genügt das nochnicht, denn Sie müssen auch noch ein Design für die Ergebnisse definieren. Sollten SieKommentare zulassen, müssen Sie auch für diese ein Design programmieren oder einvorhandenes anpassen.

Die verschiedenen Vorlagen für die Rubriken Umfrage (Poll View), Ergebnisse (PollResult) und Kommentare (Comment) erreichen Sie über Links im oberen linken Fens-terbereich (Abbildung 9.14).

Abbildung 9.14: Menü für Template-Rubriken

Gehen Sie folgendermaßen vor, um die Vorlage für Umfrage-Ergebnisse festzulegen:

1 Klicken Sie auf den Link zu Poll Result (Abbildung 9.14).

2-6496.book Page 181 Tuesday, November 19, 2002 3:47 PM

Page 182: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

182

Jede Stimme zählt

2 Tippen Sie folgenden Code in den Textbereich display_head:

<table><tr> <td bgcolor="yellow"> <b>$question</b> </td></tr><tr> <td bgcolor="white">

3 Das Code-Fragment für display_loop ist simpel, da wir auf eine grafische Darstel-lung mit Balkendiagramm verzichten. Es lautet:

$option_text : $vote_count <br>

4 Jetzt fehlt nur noch display_foot, wo wir die Gesamtzahl der Stimmen ausgeben:

</td></tr><tr> <td bgcolor="#00ff00"> <b>Insgesamt wurden $total_votes Stimmen abgegeben</b> </td></tr></table>

Das Resultat können Sie sich wieder über die Vorschau-Funktion ansehen (Abb. 9.15).

Abbildung 9.15: Die Ergebnisse in der Vorschau

2-6496.book Page 182 Tuesday, November 19, 2002 3:47 PM

Page 183: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Hilfe!

183

9.5 Hilfe!Probleme sind normal, jeder hat sie, jeder ärgert sich, jeder wünscht sich manchmaleine Welt ohne diese dämlichen, verflixten Computer.

Wenn Ihre Frustationsschwelle erreicht ist und Sie nicht mehr weiter wissen, dann gibtes zum Glück eine Adresse, wo Sie Hilfe bekommen können: die offizielle Seite vonAdvanced Poll. Dort werden auch noch andere Scripts angeboten und u.a. auch eindeutschsprachiges Supportforum (Abbildung 9.16).

Die Adresse lautet: http://www.proxy2.de.

Abbildung 9.16: Das deutsche Supportforum für Advanced Poll

2-6496.book Page 183 Tuesday, November 19, 2002 3:47 PM

Page 184: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

184

Jede Stimme zählt

Ergebnis dieses WorkshopsMit Hilfe des in diesem Workshop gewonnenen Wissens können Sie beliebige Umfragenmit dem PHP-Skript Advanced Poll in Ihre Website integrieren.

2-6496.book Page 184 Tuesday, November 19, 2002 3:47 PM

Page 185: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Workshop 10

Sagen Sie Ihre Meinung

In einem Forum über Gott und die Welt streiten

Foren und Pinnwände auf einer Website gelten als Königsweg zu hohen Besucherzah-len. Außerdem sind sie ein gutes Instrument, die Besucher mit aktuellen Informatio-nen zu versorgen, ohne selbst alle Inhalte bereitstellen zu müssen.

Mit der Einrichtung eines Forums ist es allerdings nicht getan. Die Kunst besteht darin,die Surfer durch geschicktes Foren-Management zum Schreiben zu bewegen. Ist das ge-schafft, kann sich ein solches Forum schnell zu einem virtuellen Publikumsmagnetenentwickeln. Die einzelnen Themen im Forum, Threads genannt, bieten teilweise unter-haltsamen, vielfach auch informativen Lesestoff. Diese sind oft interessanter als dieLektüre langatmiger und visuell schlecht aufbereiteter Artikel.

2-6496.book Page 185 Tuesday, November 19, 2002 3:47 PM

Page 186: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

186

Sagen Sie Ihre Meinung

Ergebnis dieses WorkshopsIn diesem Workshop werden Sie lernen, wie man ein Forum einrichtet, konfiguriertund administriert.

10.1 Historisch gewachsen Webforen sind nichts weiter als die Fortsetzung der Newsgroups-Kultur aus alten In-ternet-Tagen mit den Mitteln des Webs. Das bedeutet in erster Linie ein ansprechendesgrafisches User-Interface zur Eingabe von Diskussionsbeiträgen und deren Verknüp-fung mit einer Datenbank. Auch an die Darstellung der Diskussionsbäume und Inhalteeines Forums stellt der Surfer hohe Ansprüche. Insbesondere die Zusammenführungder zu unterschiedlichen Zeitpunkten eingegebenen User-Beiträge zu einem über-schaubaren Ganzen zählt zu den Herausforderungen für eine Forum-Applikation.

Das Angebot an Software, die diesen Anforderungen gerecht werden, ist groß. DiePalette reicht von kommerziellen Community-Lösungen bis zur Minimallösung ohneDatenbankanbindung. Im Umfeld von PHP und MySQL hat sich eine besonders krea-tive Entwicklergemeinde etabliert, aus deren Fundus zahlreiche Forumapplikationenstammen. Der Star der Szene ist ohne Zweifel Phorum, ein Open-Source-Projekt, zudem sich zahlreiche PHP-Programmierer zusammengetan haben.

Neben PHP setzt Phorum eine SQL-Datenbank voraus, vorzugsweise MySQL. Aberauch andere Produkte wie PostgreSQL, Sybase und MS SQL Server werden unterstützt.

Um Phorum zu installieren, muss man nicht unbedingt ein ausgebuffter PHP-Programmierer sein. Rudimentäre Kenntnisse reichen aus, um sein Web-angebot um

2-6496.book Page 186 Tuesday, November 19, 2002 3:47 PM

Page 187: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Die Installation

187

diese interaktive Komponente zu erweitern. Der PHP-Profi hat darüber hinaus dieChance, das Forums-Grundgerüst individuell anzupassen und zu erweitern – sowohlbei den Funktionen wie auch beim Design. Wer sich auf den Standard beschränkt,kann über das Administrations-Tool das Design nach seinen Wünschen beeinflussen,ohne programmieren zu müssen.

10.2 Die InstallationZur Installation der Phorum-Software führen Sie die nächsten Schritte aus:

1 Extrahieren Sie das Archiv in das Dokumentenverzeichnis Ihres Webservers (c:\apache\htdocs). Sie finden nach dem Entpacken ein Verzeichnis namens phorum-3.3.2c vor (Abbildung 10.1).

Abbildung 10.1: Extrahieren der nötigen Dateien

2 Ändern Sie den Verzeichnisnamen von phorum-3.3.2c in phorum ab. Das macht es später einfacher, die Phorum-Applikation anzusteuern.

CD-R

OMAU

F DE

R

Im Verzeichnis software\phorum auf der CD-ROM finden Sie dasArchiv phorum-3.3.2c.zip, das alle notwendigen Dateien von Phorumenthält.

Im Internet erhalten Sie eine aktuelle Version unter http://www.phorum.org.

2-6496.book Page 187 Tuesday, November 19, 2002 3:47 PM

Page 188: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

188

Sagen Sie Ihre Meinung

3 Öffnen Sie einen Browser und tippen Sie als URL http://localhost/phorum/admin/ ein. Da Phorum bisher noch nicht installiert ist, meldet sich nun das Installations-script (Abbildung 10.2). Wählen Sie als Datenbank MySQL und klicken Sie auf Submit.

Abbildung 10.2: Auswahl der Datenbank

4 Als Nächstes müssen Sie die Datenbank-Einstellungen vornehmen. Geben Sie dazu als Datenbankserver localhost ein, als Datenbankname meineDB und als Datenbank-User donald mit gleichnamigem Passwort (Abbildung 10.3). Klicken Sie auf Submit, um zum nächsten Bildschirm zu gelangen.

Abbildung 10.3: Einstellen der Datenbank-Parameter

2-6496.book Page 188 Tuesday, November 19, 2002 3:47 PM

Page 189: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Die Installation

189

5 Um Phorum zu administrieren, muss man sich als Administrator einloggen. Dieser Benutzer wird Admin-User genannt. Den Admin-User müssen sie nun anlegen. Geben Sie dazu einen Benutzernamen und ein Passwort an, zum Bei-spiel den Namen goofy mit gleichnamigem Passwort (Abbildung 10.4).

Abbildung 10.4: Erstellen des Admin-Benutzers

6 Im letzten Schritt der Installation müssen Sie nur noch die URL eingeben, unter der Phorum erreicht werden kann, und eine E-Mail-Adresse, zu der Störungsmeldungen geschickt werden (Abbildung 10.5). Die URL wird dabei meist schon automatisch richtig ausgewählt. Klicken Sie auf Submit, um die Installation fertig zu stellen.

Abbildung 10.5: Eingabe von URL und E-Mail-Adresse

2-6496.book Page 189 Tuesday, November 19, 2002 3:47 PM

Page 190: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

190

Sagen Sie Ihre Meinung

Sind diese Basiseinstellungen durchgeführt, müssen Sie als Nächstes mindestens einForum neu anlegen. Auch dies geschieht mithilfe des Adminstrations-Tools. Vorher soll-ten Sie jedoch noch die Sprache für das Forum von Englisch in Deutsch ändern. Phorumunterstützt eine Vielzahl anderer Sprachen für die Foren, allerdings nicht zur Administ-ration. Diese bleibt leider immer in English. Selbst Sprachen wie Ukrainisch, Polnisch,Chinesisch und Russisch stehen zur Auswahl. Um Ihr Forum an ein anderssprachigesPublikum anzupassen, laden Sie aus dem Fundus von http://www.phorum.org unter derRubrik Languages die passende Sprachdefinition. Die Seite ist wegen der vielen unter-schiedlichen Versionen der Sprachfiles etwas verwirrend. Achten Sie beim Downloaddarauf, dass die Version mit der des Forums übereinstimmt. Auf der CD-ROM findenSie im Unterverzeichnis software\phorum die Datei german.php für deutsche Sprach-unterstützung.

Um diese Sprachdatei benutzen zu können, gehen Sie folgendermaßen vor:

1 Übertragen Sie die Datei german.php in das Phorum-Unterverzeichnis lang auf Ihrem Server.

Abbildung 10.6: Kopieren der Sprachdatei

2 Öffnen Sie einen Browser und gehen Sie zur URL http://localhost/phorum/admin/. Diesmal kommen Sie auf die Login-Seite des Phorum-Admininstrations-Tools. Geben Sie hier die Daten Ihres Admin-Users ein, also goofy mit Passwort goofy. Nach dem Einloggen präsentiert sich Ihnen das Hauptmenü der Phorum-Administration (Abbildung 10.7).

2-6496.book Page 190 Tuesday, November 19, 2002 3:47 PM

Page 191: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Die Installation

191

Abbildung 10.7: Das Hauptmenü der Administrationsseite

3 Wählen Sie auf der Phorum-Administrationsseite den Punkt Global Options im Menü Phorum Setup.

4 Hier können sie als Default Language alle Sprachen auswählen, die im lang-Ver-zeichnis als Dateien vorhanden sind. Wählen Sie also german für die deutsche Sprachunterstützung (Abbildung 10.8).

Abbildung 10.8: Einstellen der Sprache für die Foren

2-6496.book Page 191 Tuesday, November 19, 2002 3:47 PM

Page 192: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

192

Sagen Sie Ihre Meinung

10.3 Neues Forum einrichtenNach der erfolgreichen Installation können Sie sich über den Menüpunkt New Forumauf der Administrationsseite an die Einrichtung des ersten Forums machen. Es gibt dabeieine Unzahl von Parametern, die Sie verändern und individuell festlegen können, ohneeine Zeile PHP-Code programmieren zu müssen. Es gibt einige Pflichtfelder, die ausge-füllt werden müssen, andernfalls scheitert die Einrichtung. Gehen Sie wie folgt vor:

1 Wählen Sie den Menüpunkt New Forum unter der Rubrik Forum Maintenance auf der Administrationsseite. Es öffnet sich eine Seite, in der Sie sehr viele Informatio-nen eingeben können. Für den Anfang reicht es aber, wenn Sie einen Namen, eine Beschreibung und einen Tabellennamen festlegen (Abbildung 10.9).

Abbildung 10.9: Parameter für neues Forum eingeben

2-6496.book Page 192 Tuesday, November 19, 2002 3:47 PM

Page 193: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Neues Forum einrichten

193

2 Scrollen Sie zum Ende der Seite und klicken Sie auf Submit. Sie erhalten eine Bestätigungsmeldung und befinden sich jetzt auf der Administrationsseite für das UFO-Forum (Abbildung 10.10).

Abbildung 10.10: Administrationsseite des UFO-Forums

3 Geben Sie http://localhost/phorum/ in die URL-Leiste des Browsers ein, um zur Startseite des neuen Forums zu gelangen. Hier sehen Sie, wie sich das Forum den Benutzern präsentiert (Abbildung 10.11). Zurzeit ist das Forum noch sehr lang-weilig, da keine Beiträge existieren. Das werden wir aber bald ändern!

Abbildung 10.11: Das noch leere UFO-Forum

2-6496.book Page 193 Tuesday, November 19, 2002 3:47 PM

Page 194: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

194

Sagen Sie Ihre Meinung

Damit steht das erste PHP-Forum und kann von interessierten Surfern mit Leben er-füllt werden. Alle Beiträge werden in MySQL-Datenbanken gespeichert. Dazu legt dasAdministrations-Tool bei der Einrichtung von Foren mehrere Tabellen an. DieGrundparameter aller eingerichteten Foren liegen in der Tabelle forums. Das Scriptindex.php generiert daraus die Forenübersicht. Zu jedem eingerichteten Forum gibt eszwei weitere Tabellen. In der einen sind Parameter wie Verfasser, Betreff und Themen-ID (Thread-ID) abgelegt, während die zweite die Nachrichtentexte enthält. Aus dieserDatenbasis erstellt das Script list.php die Ansicht der Nachrichten und Threads zu ei-nem Forum. Grafische Elemente, die sich im Verzeichnis /phorum/images/ befinden,sorgen für eine übersichtliche Darstellung auch umfangreicher Diskussionen. DieÜbersicht ist eine Tabelle mit Thema, Autor, Anzahl der Antworten und Datum derletzten Antwort. Mit einem Klick auf die Zelle mit dem Thema rufen Benutzer dieNachricht ab.

Die Präsentation der Nachrichten kann in zwei Varianten erfolgen: eine einfache Auf-listung der Threads oder die gesamte Baumstruktur. Umschalten kann man mit einemKlick auf Antworten anzeigen bzw. Zeige nur Themen.

10.4 Einen eigenen Beitrag schreibenWill ein Forumsbenutzer einen neuen Beitrag erstellen, klickt er auf Neues Thema unddas Script post.php startet das Eingabeformular (Abbildung 10.12).

Abbildung 10.12: Ein erster Beitrag

2-6496.book Page 194 Tuesday, November 19, 2002 3:47 PM

Page 195: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Einen eigenen Beitrag schreiben

195

Auszufüllen sind die Felder Namen, E-Mail-Adresse, Betreff und der eigentliche Nach-richtentext. Als Zusatzoption kann der Verfasser noch festlegen, dass Antworten aufdiese Message an seine E-Mail-Adresse gehen sollen. Dazu ist das Kästchen am Formu-larende zu aktivieren.

Klickt ein User dann im Forum auf diesen Beitrag, erscheint dieser auf dem Bildschirmund das Formular für eine Antwort wird gleich angehängt (Abbildung 10.13).

Abbildung 10.13: Auf Beiträge antworten

Weitere Links im Forum dienen zur Navigation im Forum, zum Beispiel, wenn dieThreadliste sich über mehrere Bildschirmseiten erstreckt.

In unserem Beispiel gibt es keine Benutzerverwaltung, d.h., Benutzer des Forums müs-sen sich nicht erst einloggen, bevor Sie Beiträge schreiben können. Mit einem einzigenMausklick kann man loslegen und eigene Beiträge oder Antworten im Forum platzie-ren. Wer aber eine Benutzerverwaltung im Forum möchte, kann das mit Phorum auchimplementieren. Wie dies funktioniert, erfahren Sie im nächsten Abschnitt.

2-6496.book Page 195 Tuesday, November 19, 2002 3:47 PM

Page 196: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

196

Sagen Sie Ihre Meinung

10.5 SchutzmechanismenWilden Attacken anonymer Surfer ist der Betreiber eines Forums zum Glück nichtschutzlos ausgeliefert. Er kann wahlweise E-Mail- und IP-Adressen oder Namen sperren.Dazu müssen Sie die Scripts bad-emails.php, bad-hosts.php oder bad-names.php iminclude-Verzeichnis modifizieren. Um Missbrauch des Forums zu vermeiden, kannaußerdem eine so genannte Badword-Liste geführt werden, die unerwünschte Begriffeausfiltert. Die Liste der Unworte liegt in der Datei mit dem treffenden Namen censor.php.

Die Foren können auch mit einem Passwort geschützt werden. Allerdings ist dieseVorgehensweise etwas mühsam, denn jeder Besucher benötigt eine Zugangskennungund ein Passwort. Dafür gibt es prinzipiell zwei Möglichkeiten:

■ Wenn sich ein Benutzer, der bisher noch keine Kennung hatte, versucht einzu-loggen, kann er sich selbst als neuen Benutzer registrieren.

■ Sie als Administrator legen neue Benutzer an und vergeben die Kennung entspre-chend.

Gehen Sie folgendermaßen vor, um einen neuen Benutzer anzulegen:

1 Wählen Sie den Punkt UserAdmin unter Forum Maintenance auf der Administra-tionsseite.

2 Sie erhalten eine Übersicht aller angelegter Benutzer. Zurzeit gibt es nur den Admin-User. Klicken Sie auf den Link Add User, um einen neuen Benutzer hin-zuzufügen.

3 Geben Sie alle benötigten Informationen für den neuen Benutzer ein. Sie müssen zumindest eine Kennung, den Namen, die E-Mail-Adresse und das Passwort bestimmen (Abbildung 10.14). Klicken sie auf Save.

PROF

ITIP

P

Es ist Ihre Entscheidung, ob Sie eine Liste mit Unworten führen wol-len. Meistens erreicht man damit nicht allzuviel, da böswillige Leuteimmer einen Weg finden, „Müll“ in Foren zu schreiben.

2-6496.book Page 196 Tuesday, November 19, 2002 3:47 PM

Page 197: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Anpassen des Layouts

197

Abbildung 10.14: Anlegen eines neuen Benutzers

4 Jetzt können Sie sich unter der neuen Kennung einzuloggen.

10.6 Anpassen des LayoutsPhorum ist schnell installiert und lauffähig. In den wenigsten Fällen dürfte das Stan-dardlayout jedoch nahtlos in ein bestehendes Design einer Site passen. Für individu-elle Modifikationen besteht großer Spielraum, wobei man nicht einmal in den Codeder einzelnen Scripts eingreifen muss.

Wenn Ihnen die Navigationstexte des Forums zum Beispiel nicht passen, rufen Sie ein-fach die Sprachdatei auf und nehmen dort die gewünschten Änderungen vor. Wichtig istdabei nur, dass die Variablenwerte in Anführungszeichen stehen und die Zeilen mit ei-nem Semikolon enden. Auch wer keine PHP-Kenntnisse besitzt, kann hier aktiv werden.Allerdings sollte man die Auswirkungen genau überprüfen. Zum Beispiel können zu lan-ge Formulierungen die Präsentation des Forums auf dem Bildschirm verunstalten.

Die Farben der verschiedenen Forum-Bestandteile lassen sich über das Administrations-Tool verändern. Dabei haben Sie zwei Möglichkeiten:

■ Sie verändern die globalen Voreinstellungen (Default-Werte) der Farben. Dadurchwird die geänderte Darstellung für jedes Forum übernommen.

■ Sie verändern die Farben nur für einzelne Foren, die Standardeinstellungen sinddavon nicht betroffen. Gehen Sie dazu auf die Administrationsseite eines bestimm-ten Forums und wählen den Punkt Edit Properties. Hier können Sie die Farben ein-stellen.

2-6496.book Page 197 Tuesday, November 19, 2002 3:47 PM

Page 198: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

198

Sagen Sie Ihre Meinung

Folgendes Beispiel soll die Vorgehensweise für die erste Möglichkeit verdeutlichen:

1 Wählen Sie auf der Administrationsseite den Punkt HTML Settings unter Phorum Setup.

2 Ändern Sie das Farbschema wie in Abbildung 10.15 gezeigt ab und bestätigen Sie Ihre Eingaben durch Klick auf die Schaltfläche Update. Wenn Ihnen die HTML-Notation für Farbwerte unbekannt ist, können Sie die Bedeutung im Anhang nachschlagen.

Abbildung 10.15: Ein alternatives Farbschema

3 Alle Foren haben nun das neue Standard-Farbschema. Testen Sie das Aussehen, indem Sie das UFO-Forum erneut aufrufen. Wie gefällt es Ihnen?

2-6496.book Page 198 Tuesday, November 19, 2002 3:47 PM

Page 199: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Anpassen des Layouts

199

Die PHP-Scripts header.php und footer.php im include-Verzeichnis der Phorum-Installation sind eine weitere Spielwiese für individuelle Anpassungen. Hier kann manmit wenigen HTML-Zeilen nachhaltige Auswirkungen erzielen. Hintergrundfarbenoder der Einbau eines Logos sind damit kein Problem. Noch größere Effekte lassensich durch den geschickten Einbau von Style-Definitionen erzielen. Wichtig ist beimBearbeiten nur, dass der integrierte PHP-Code (im Listing fett) unverändert erhaltenbleibt. In der Rohfassung sieht das Script header.php wie folgt aus (zur Übersicht wirddas Script erst ab dem body-Tag dargestellt):

<body bgcolor="<?php echo (empty($ForumBodyColor)) ? $default_body_color : $ForumBodyColor; ?>" link="<?php echo (empty($ForumBodyLinkColor)) ? $default_body_link_color : $ForumBodyLinkColor; ?>" alink="<?php echo (empty($ForumBodyALinkColor)) ? $default_body_alink_color : $ForumBodyALinkColor; ?>" vlink="<?php echo (empty($ForumBodyVLinkColor)) ? $default_body_vlink_color : $ForumBodyVLinkColor; ?>">

<div class="PhorumForumTitle"> <strong> <?php echo $ForumName; ?> </strong></div>

<br />

Möchten Sie nun zum Beispiel einen eigenen Text am Seitenanfang einfügen, müssensie nur entsprechende HTML-Anweisungen hinter dem body-Tag einfügen:

<h3>Diese Foren werden Ihnen mit freundlicher Unterstützung der Firma <b><i>Alien Technologies </b></i> präsentiert</h3><br>

Dieser Text erscheint jetzt am Beginn jeder Seite (Abbildung 10.16).

2-6496.book Page 199 Tuesday, November 19, 2002 3:47 PM

Page 200: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

200

Sagen Sie Ihre Meinung

Abbildung 10.16: Angepasster Seitenheader

Das Script footer.php bestimmt im Gegensatz zu header.php das Aussehen des Seiten-fußes. Hier ist zum Beispiel festgelegt, dass die Grafik „powered by Phorum“ auf jederSeite ganz unten erscheint. Hier ist das Originalscript:

<br /><div align="center"> <a href="http://phorum.org"> <img src="images/button.gif" width="90" height="30" alt="phorum.org" border="0" /> </a></div></body></html>

Um diese Grafik zu entfernen, müssen Sie nur das div-Tag mit eingeschlossenem img-Tag und Link löschen:

<br /></body></html>

Erfahrenen PHP-Programmierern werden diese Anpassungsmöglichkeiten vielleichtnicht genügen. Weitergehende Veränderungen lassen sich natürlich per Scriptprogram-mierung realisieren. Es empfiehlt sich jedoch, solche Eingriffe nicht am lebenden Objektvorzunehmen. Bevor Sie sich an die Umprogrammierung heranwagen, sollten Sie injedem Fall eine Sicherung der lauffähigen Version anlegen.

2-6496.book Page 200 Tuesday, November 19, 2002 3:47 PM

Page 201: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Patches und Erweiterungen

201

10.7 Patches und ErweiterungenUnterstützung und Anregungen für Änderungen gibt es im Web reichlich. Ein umfang-reiche Online-Gemeinde hat sich daran gemacht, Phorum in vielfältiger Weise zu modi-fizieren und zu ergänzen. Treffpunkt diese Bastler ist die Site http://mods.phorum.org/.Hier findet man unzählige Anregungen, Codefragmente und fertige Zusatzscripts. Ineinem Forum kann man Fragen stellen und selber Tipps weitergeben.

Auch im deutschsprachigen Web hat sich eine aktive und zahlenmäßig große Pho-rum-Gemeinde etabliert. Deren Anlaufstelle ist die Seite http://www.myphorum.de(Abbildung 10.17). Hier gibt es ein Supportforum, in dem Anbieter von Foren Infor-mationen austauschen und Newbies Fragen stellen können. Ein interessanter Zusatz-service für alle, die das Forum zwar einsetzen möchten, aber mit PHP und SQL-Datenbanken nichts am Hut haben: Bei myphorum.de kann man auch Foren kostenloshosten. Schon über 2.500 Foren sind registriert. Viele Betreiber von Webseiten, die ih-ren Usern diese Diskussionsbasis anbieten wollen, ohne Phorum selbst auf IhremWebspace zu installieren, haben davon Gebrauch gemacht.

Abbildung 10.17: MyPhorum, die deutsche Anlaufstelle für Phorum

2-6496.book Page 201 Tuesday, November 19, 2002 3:47 PM

Page 202: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

202

Sagen Sie Ihre Meinung

Wer das Forum in Aktion sehen will, sollte die Site des Magazins Stern (www.stern.de)aufsuchen. Über die Rubrik Politik/Interaktiv kommen Surfer zu Diskussionsforen zuverschiedenen Themen – realisiert mit Phorum.

Ergebnis dieses WorkshopsSie sind nun in der Lage mit Hilfe von phorum ein oder mehrere Foren in Ihre Websitemit aufzunehmen.

2-6496.book Page 202 Tuesday, November 19, 2002 3:47 PM

Page 203: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Workshop 11

Und Sie dachten, es wäre schwierig ...

Wie Sie sich das Leben leichter machen mit einem Content-Management-System

Sie sind jemand, der alles will? Die Fähigkeiten eines News-Systems, Umfragen, Foren,alles in einem? Und das am besten noch ohne Programmierarbeit?

Ich werde versuchen, Sie zufrieden zu stellen und biete Ihnen als Abschlusskapitel dasSahnehäubchen des Buches. Hier wird ein so genanntes Content-Management-Systembeschrieben, das es ermöglicht, die Inhalte der Website in der Datenbank abzulegen undmit wenig Aufwand eine umfangreiche Website darum zu basteln. Man glaubt es kaum,aber auch dafür gibt es fertige Scripts unter GPL-Lizenz, also frei benutzbar. Eines davonsoll in diesem Kapitel vorgestellt werden.

2-6496.book Page 203 Tuesday, November 19, 2002 3:47 PM

Page 204: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

204

Und Sie dachten, es wäre schwierig ...

Ergebnis dieses WorkshopsWir werden in diesem Workshop eine fiktive Website erstellen rund ums ThemaSegeln. Sie wird unter anderem eine Umfrage und einen Bootsmarkt enthalten.

11.1 PHPNuke – die Eier legende WollmilchsauPHPNuke ist ein Webportal-System mit Content Management. Das bedeutet, es stelltein fertiges System zur Verfügung, das der Anwender nur ein wenig anpassen muss,um eine eigene professionelle Homepage zu erstellen. Der Inhalt (Content) wird vonPHPNuke verwaltet (Management), d.h., Benutzer können über entsprechende Bild-schirmmasken bestimmen, was auf der Seite dargestellt wird und wie es dargestelltwird. Dabei können die Rechte für verschiedene Benutzer sehr unterschiedlich sein. Eskönnte zum Beispiel einen Redakteur geben, der zwar Artikel beliebig hinzufügen oderlöschen darf, aber darüber hinaus keine Rechte hat. Andererseits kann es einen Desig-ner geben, der das Layout der Seite verändern darf, aber nicht den Inhalt. In unseremFall sind wir beides in einem, also benötigen wir auch nur eine Benutzerkennung, diewir später anlegen werden. Alle Surfer, die keine Benutzerkennung haben, können sichzumindest die Inhalte ansehen, also auf der Website navigieren.

PHPNuke ist frei verfügbar und erfreut sich einer großen Beliebtheit und Entwickler-gemeinde. Es werden täglich neue Erweiterungen oder Änderungen zum Downloadbereitgestellt, die das System noch besser machen.

Ein Alleskönner ist PHPNuke deshalb, weil viele Erweiterungen standardmäßig schonintegriert sind. So haben Sie die Möglichkeit, Umfragen, Foren oder Neuigkeiten inIhre Nuke-Seite einzubinden. Diese große Vielfalt hat aber auch ihren Preis: Das Er-scheinungsbild von PHPNuke ist nur in gewissen Grenzen flexibel einstellbar, einen

2-6496.book Page 204 Tuesday, November 19, 2002 3:47 PM

Page 205: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Installation

205

unkonventionellen Seitenaufbau können Sie damit nicht oder nur mit viel Program-mieraufwand realisieren.

Generell bekommt man als Anfänger spätestens dann Schwierigkeiten, wenn man diemitgelieferten Design-Vorlagen verändern möchte, denn dazu benötigt man schon ei-niges an Wissen über PHP, HTML und CSS. Aber zum Glück gibt es eine große Vielfaltan fertigen Themes, sodass Sie sicherlich eines finden werden, das Ihren Vorstellungenentspricht. Doch dazu später mehr. Lassen Sie uns zunächst einmal dieses großartigeTool installieren.

11.2 InstallationZur Installation von PHPNuke gehen Sie bitte folgendermaßen vor:

1 Extrahieren Sie das Archiv phpnuke.zip in das Dokumentenverzeichnis Ihres lokalen Webservers. In unserem Fall mit PHPTriad ist das c:\apache\htdocs. Nach dem Entpacken finden Sie einen Unterordner phpnuke, in dem alle benötigten Dateien zu finden sind.

2 Öffnen Sie die Datei config.php unterhalb des Verzeichnisses phpnuke\html und ändern Sie die Datenbankeinstellungen wie folgt ab:

$dbhost = "localhost";$dbuname = "donald";$dbpass = "donald";$dbname = "nuke";$prefix = "nuke";$user_prefix = "nuke";$dbtype = "MySQL";

3 Benutzen Sie phpMyAdmin, um eine neue Datenbank mit dem Namen nuke zu erstellen.

CD-R

OMAU

F DE

R

Sie finden die notwendige Archivdatei phpnuke.zip auf der CD-ROMim Verzeichnis \software\phpnuke.

Im Internet finden Sie eine aktuelle Version unter http://www.phpnuke.org.

2-6496.book Page 205 Tuesday, November 19, 2002 3:47 PM

Page 206: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

206

Und Sie dachten, es wäre schwierig ...

4 Scrollen Sie etwas nach unten zur Rubrik SQL-Befehl(e) ausführen und klicken Sie auf Durchsuchen (Abbildung 11.1). Wählen Sie die Datei nuke.sql im Ver-zeichnis c:\apache\htdocs\phpnuke\sql.

Abbildung 11.1: Erstellen der nötigen Tabellen

5 Klicken Sie auf OK. Die Datei nuke.sql ist ein sogenannter SQL-Dump, in dem die notwendigen SQL-Befehle gespeichert sind, die zum Erstellen der Tabellen der Nuke-Datenbank nötig sind.

6 Wechseln Sie nun zur URL http://localhost/phpnuke/admin.php. Sie gelangen auf die Administrationsseite von PHPNuke. Beim erstmaligen Aufruf dieser Seite werden Sie aufgefordert, einen Admin-User anzulegen, mit dem Sie sich später als Administrator legitimieren können. Geben Sie als Kennung wieder goofy und das Passwort goofy an (Abbildung 11.2) und bestätigen Sie Ihre Eingaben mit Submit.

2-6496.book Page 206 Tuesday, November 19, 2002 3:47 PM

Page 207: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Installation

207

Abbildung 11.2: Erstellen des Super-Users

Damit ist die Installation von PHPNuke beendet. Im nächsten Abschnitt erfahren Sie,wie Sie einige grundlegende Einstellungen ändern können.

VORS

ICHT

! Der Benutzer, den Sie eben erstellt haben, ist der „PHPNuke-Gott“,denn er darf wirklich alles. Falls jemand die Kennung und das Pass-wort kennt oder errät, kann er Ihrer Website großen Schaden zufü-gen. Seien Sie also vorsichtig! Falls Sie anderen Benutzern Rechteeinräumen wollen, können Sie andere Administratoren einrichten,die weniger Rechte als goofy besitzen.

2-6496.book Page 207 Tuesday, November 19, 2002 3:47 PM

Page 208: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

208

Und Sie dachten, es wäre schwierig ...

11.3 Erste SchritteSie werden sicherlich erschrecken, wenn Sie zum ersten Mal die Administrationsseitevon PHPNuke aufrufen. Es gibt sehr viele Menüpunkte und Möglichkeiten. Wir wer-den Schritt für Schritt vorgehen und zunächst ein paar globale Einstellungen ändern:

1 Wechseln Sie zu der URL http://localhost/phpnuke/admin.php und loggen Sie sich mit Ihrer Admin-Kennung (goofy) ein.

2 Sie sehen nun in der Mitte des Fensters das Administrationsmenü (Abbildung 11.3).

Abbildung 11.3: Das Administrationsmenü

3 Wählen Sie den Punkt Preferences, um die globalen Einstellungen zu verändern. Scrollen Sie etwas nach unten bis zur Rubrik General Site Info. Öffnen Sie die Optionsliste unter Default Theme for your site und wählen Sie Odyssey (Abbil-dung 11.4). Dieses Thema passt farblich gut zu unserer Segel-Website.

2-6496.book Page 208 Tuesday, November 19, 2002 3:47 PM

Page 209: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Erste Schritte

209

Abbildung 11.4: Auswählen einer Design-Vorlage

4 Direkt unter der Themenauswahl finden Sie die Spracheinstellungen. Wählen sie hier german.

5 Scrollen Sie bis ans Ende der Seite und klicken Sie auf Save Changes, um Ihre Ein-stellungen zu übernehmen.

6 Die Seite ist ja immer noch in English! Das liegt daran, dass Sie zwar die Vorein-stellung geändert haben, aber sich ins englische System eingeloggt haben. Die Sprache, die ein Surfer benutzt, wird in einem Cookie gespeichert. Damit wir in Deutsch weitermachen können, müssen Sie in der Rubrik Languages am linken Fensterrand german wählen (Abbildung 11.5). Übrigens, wie gefällt Ihnen das veränderte Design?

2-6496.book Page 209 Tuesday, November 19, 2002 3:47 PM

Page 210: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

210

Und Sie dachten, es wäre schwierig ...

Abbildung 11.5: Sprache festlegen

7 Jetzt sind Sie allerdings aus der Administration rausgeworfen worden, so ein Ärger! Wählen Sie aus dem Menü am linken Fensterrand den Punkt Administration, um das zu beheben. Sie sollten das Adminstrationsmenü jetzt in deutscher Sprache sehen.

11.4 Ein bisschen AufräumarbeitBei PHPNuke kann es vorkommen, dass man den Wald vor lauter Bäumen nicht sieht,so umfangreich ist die Funktionalität. Allein das Menü am linken Fensterrand ist mitseinen vielen Einträgen erschlagend. Hier wollen wir ein bisschen aufräumen undFunktionen, die wir für die Segel-Seite nicht brauchen, entfernen.

Die einzelnen Bestandteile, aus denen sich eine PHPNuke-Site aufbaut, heißen Blöcke.Das linke Menü besteht aus den Blöcken Modules, Administration, Wartende news,Who’s online, Languages und Amazon.

Man kann natürlich bestimmen, welche Blöcke aktiv sein sollen und an welcher Stelleauf der Website sie platziert sind. Für unsere Segel-Seite wollen wir das linke Menüetwas abspecken:

1 Wählen Sie den Punkt Blöcke aus dem Administrationsmenü von PHPNuke.

2 Sie gelangen auf eine Seite, auf der Sie sehen können, welche Blöcke dargestellt werden und wo (Abbildung 11.6). Alle sichtbaren Blöcke haben den Status Aktiv. In der Spalte Position sehen Sie, wo der Block auf einer Seite platziert wird.

2-6496.book Page 210 Tuesday, November 19, 2002 3:47 PM

Page 211: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Ein bisschen Aufräumarbeit

211

Abbildung 11.6: Verwaltung der PHPNuke-Blöcke

3 Deaktivieren Sie alle Blöcke außer Modules, Administration, Who’s online und Survey. Die Funktion dafür finden Sie in der rechten Spalte Funktionen.

Unsere nächste Aufräumaktion gilt dem ersten Block Modules im linken Menü. Mo-dule bieten die verschiedenen Funktionalitäten von PHPNuke an. Es gibt ein Modulfür Foren, ein Modul für Neuigkeiten, eines für Umfragen usw. Wir wollen nun be-stimmen, welche Module für unsere Website aktiv sein sollen:

1 Klicken Sie auf den Link zu Modules im Administrationsmenü.

2 Deaktivieren Sie alle Module außer Forums, Search, Surveys, Topics und Web Links. Den Link zum Deaktivieren finden Sie in der rechten Spalte Funktionen (Abbildung 11.7).

PROF

ITIP

P Sie können Module auch ganz löschen. Das Deaktivieren ist abermeist sinnvoller, denn man kann deaktivierte Module zu einem spä-teren Zeitpunkt leicht wieder aktivieren, falls man Sie doch benötigt.Löschen auf der anderen Seite spart Speicherplatz.

2-6496.book Page 211 Tuesday, November 19, 2002 3:47 PM

Page 212: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

212

Und Sie dachten, es wäre schwierig ...

Abbildung 11.7: Modules-Administration

Zwischendurch wollen wir einmal testen, wie sich die Seite einem Surfer präsentiert.Dazu müssen Sie sich aber erst ausloggen, denn andernfalls sehen Sie die Ausgabe fürden Admin-User. Danach gehen Sie auf die URL http://localhost/phpnuke/html/. Siewerden eine Seite wie in Abbildung 11.8 sehen.

Abbildung 11.8: Die aufgeräumte Version von PHPNuke

2-6496.book Page 212 Tuesday, November 19, 2002 3:47 PM

Page 213: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Sail away ...

213

Die Seite wirkt jetzt zwar aufgeräumter und übersichtlicher, da wir uns nur auf einenTeil der Möglichkeiten von PHPNuke beschränkt haben, aber mit Segeln hat sie nochnichts zu tun.

11.5 Sail away ...Nachdem wir das prinzipielle Layout und die Funktionalität bestimmt haben, geht esjetzt um die Inhalte. Ich weiß nicht, wie es Ihnen geht, aber mich stört schon seit ge-raumer Zeit das Logo von PHPNuke am Anfang jeder Seite. Also lassen Sie uns diesesals Erstes ändern.

Ausgerechnet so etwas Simples ist recht aufwändig, denn man muss dafür eine HTML-Seite der Design-Vorlage verändern . Aber keine Sorge, ich zeige Ihnen wie:

1 Für jede Design-Vorlage (theme) existiert ein Verzeichnis mit den dazugehörigen Templates und Bildern. Da wir eine Vorlage namens Odyssey benutzen, wechseln Sie ins Verzeichnis phpnuke\html\themes\Odyssey.

2 Kopieren Sie ins Unterverzeichnis images die Datei hafen.jpg von der CD-ROM. Diese Datei finden Sie im Ordner software\phpnuke\images.

3 Öffnen Sie die Datei header.html in einem Texteditor und suchen Sie die Zeilen 7–9, die folgenden Inhalt haben:

<td align="center"> <a href="index.php"> <img src="themes/Odyssey/images/logo.gif" alt=""._WELCOMETO." $sitename" border="0"> </a></td>

4 Ersetzen Sie den Bildnamen logo.gif durch hafen.jpg:

<td align="center"> <a href="index.php"> <img src="themes/Odyssey/images/hafen.jpg" alt=""._WELCOMETO." $sitename" border="0"> </a></td>

2-6496.book Page 213 Tuesday, November 19, 2002 3:47 PM

Page 214: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

214

Und Sie dachten, es wäre schwierig ...

5 Ergänzen Sie den Code mit einer Seitenüberschrift:

<!-— neuer Code --><td><font face="Arial" style="font-size: 30px"> Helmuts<br>Segelseite</font></td><!—- Ende neuer Code --><td align="center"> <a href="index.php"> <img src="themes/Odyssey/images/hafen.jpg" alt=""._WELCOMETO." $sitename" border="0"> </a></td>

6 Speichern Sie die Datei.

Abbildung 11.9 zeigt das Ergebnis.

Abbildung 11.9: Angepasster Seitenkopf

Als Nächstes passen wir die Umfrage an, die am rechten Fensterrand erscheint (momen-tan nicht, weil wir als Admin-User eingeloggt sind).

2-6496.book Page 214 Tuesday, November 19, 2002 3:47 PM

Page 215: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Sail away ...

215

1 Wählen Sie aus dem Administrationsmenü den Punkt Umfragen.

2 Klicken Sie unter der Rubrik Umfragen verwalten den Link Umfrage löschen .

3 Selektieren Sie die einzig bisher existierende Umfrage und klicken Sie auf die Schaltfläche Löschen .

4 Sie sind jetzt wieder auf der Admin-Startseite. Um eine neue Umfrage zu erstel-len, wählen Sie wiederum Umfragen aus dem Administrationsmenü.

5 Als Nächstes müssen wir die Kategorie bestimmen, zu der die Umfrage gehören soll. Scrollen Sie dazu etwas nach unten bis zur Optionsliste Bereich, in der zurzeit Artikel ausgewählt ist. Klicken Sie auf den Link Hinzufügen neben der Optionsliste und fügen Sie einen neuen Bereich namens Segelreviere hinzu (Abbildung 11.10).

Abbildung 11.10: Neue Kategorie erstellen

6 Nach dem Speichern müssen Sie noch ein letztes Mal Umfragen aus dem Admi-nistrationsmenü wählen, denn jetzt wollen wir unsere neue Umfrage nach der ganzen Vorarbeit endlich erstellen.

7 Geben Sie als Frage ein: Was ist das beste Segelrevier? und als Optionen Mittel-meer, Karibik, Indischer Ozean und Nordsee (Abbildung 11.11).

2-6496.book Page 215 Tuesday, November 19, 2002 3:47 PM

Page 216: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

216

Und Sie dachten, es wäre schwierig ...

Abbildung 11.11: Neue Umfrage erstellen

8 Scrollen Sie wieder zur Optionsliste Bereich und wählen Sie die neu erstellte Kate-gorie Segelreviere aus.

9 Das war’s. Scrollen Sie bis zum Ende der Seite und klicken Sie auf Umfrage erstellen.

An dieser Stelle lohnt sich ein Test, wie sich die Seite bisher einem potenziellen Besu-cher präsentiert. Loggen Sie sich aus und versuchen Sie es. Der Link lautet http://local-host/phpnuke/html/.

Das nimmt doch schon langsam Formen an, oder? Störend wirkt noch der Begrüßungs-text von PHPNuke. Dieser ist Teil des News-Systems, also kann man leicht eine eigeneMeldung ausgeben. Machen wir uns an die Arbeit!

1 Loggen Sie sich wieder als Administrator ein und wählen Sie den Punkt Mitteilun-gen aus dem Administrationsmenü.

2 Schauen Sie sich die Nachrichtenübersicht an (Abbildung 11.12). Bisher ist nur ein Eintrag vorhanden: die noch störende Begrüßungsmeldung von PHPNuke.

2-6496.book Page 216 Tuesday, November 19, 2002 3:47 PM

Page 217: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Sail away ...

217

Abbildung 11.12: Mitteilungsadministration

3 Löschen Sie die Mitteilung über den Link Löschen in der Spalte Funktionen.

4 Legen Sie eine neue Nachricht an mit dem Titel Willkommen! und einem netten Begrüßungstext wie zum Beispiel in Abbildung 11.13. Geben Sie als Verfallsdatum Unbegrenzt an, denn andernfalls würde die Mitteilung nach einer gewissen Zeit automatisch gelöscht. Wenn Sie alles eingegeben haben, klicken Sie auf Nachricht hinzufügen .

Abbildung 11.13: Neue Nachricht erstellen

2-6496.book Page 217 Tuesday, November 19, 2002 3:47 PM

Page 218: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

218

Und Sie dachten, es wäre schwierig ...

Das Grundgerüst unserer Seite steht damit. Was jetzt noch fehlt, sind Inhalte. Wie Siedas Content-Management-System von PHPNuke benutzen, um Informationen anden Mann oder die Frau zu bringen, erfahren Sie im nächsten Abschnitt. Es bleibt alsospannend!

11.6 Artikel schreiben und veröffentlichenPHPNuke verfügt über ein Redaktionssystem, d.h., dass mehrere Autoren Artikelschreiben können und ein Redakteur darüber entscheidet, welcher Artikel wann onli-ne gestellt wird. Für viele Einsatzgebiete ist das schon zu viel des Guten. Oft sind Web-designer sowohl Autor als auch Redakteur einer Website. Prinzipiell könnten abermehrere Leute Inhalte bereitstellen (Artikel schreiben), ähnlich wie bei einer Zeitung.

Wir wollen dieses Reaktionssystem nutzen, um einen Bootsmarkt zu realisieren, woBenutzer der Seite Boote anbieten und kaufen können.

Um das Ganze in Gang zu bringen, bieten Sie selbst ein Boot an. Alle weiteren Ange-bote sollen dann von Surfern kommen.

Wie funktioniert das Ganze? Schauen wir uns zunächst an, wie Sie Artikel schreibenkönnen.

Jeder Artikel muss einer Kategorie und einem Thema zugeordnet werden. Dabei istdas Thema die Feinunterscheidung und die Kategorie die grobe Einteilung. Wirwollen für die Artikel die Kategorie Segelboote hinzufügen. Als Thema wählen wir inunserem Fall Bootsmarkt.

1 Jedes Thema hat ein zugehöriges Icon. Für den Bootsmarkt finden Sie auf der CD-ROM unter software\phpnuke\images das Bild bootsmarkt.jpg. Kopieren Sie dieses Bild in den Ordner images\topics in Ihrem phpnuke-Verzeichnis.

2 Wählen Sie aus dem Administrationsmenü den Punkt Themen.

VORS

ICHT

! Wenn andere Personen Artikel schreiben möchten, benötigen dieseeine Benutzerkennung für PHPNuke und die entsprechenden Rechte.Erweiterte Benutzerrechte können Sie einstellen über den PunktAdministratoren im Administrationsmenü. Damit sich Benutzer ein-loggen können, müssen Sie den Block Login aktivieren (über die Aus-wahl von Blöcke/Block-Einstellungen im Administrationsmenü).

2-6496.book Page 218 Tuesday, November 19, 2002 3:47 PM

Page 219: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Artikel schreiben und veröffentlichen

219

3 Geben Sie als Namen für das Thema markt ein. Dieser Name wird nur intern benutzt. Auf der Website wird das angezeigt, was Sie unter Themeninfo eingeben: Bootsmarkt. Als Icon für dieses Thema wählen Sie bootsmarkt.jpg (Abbildung 11.14).

Abbildung 11.14: Neues Thema anlegen

4 Bestätigen Sie Ihre Eingaben durch einen Klick auf Thema hinzufügen .

5 Sie sehen nun unter der Rubrik momentan aktive Themen das soeben erstellte Thema mit zugehörigem Bild.

Jetzt brauchen wir noch eine neue Kategorie namens Segelboote, bevor wir den erstenArtikel schreiben können.

1 Wählen Sie Neuen Artikel aus dem Administrationsmenü.

2 Scrollen Sie etwas nach unten, bis Sie wieder zu der bekannten Optionsliste Bereich kommen. Hier erstellen Sie einen neuen Bereich Segelboote. Sie erinnern sich, dass Sie im letzten Unterkapitel einen Bereich namens Segelreviere erstellt haben? Genauso verfahren Sie es jetzt mit der neuen Kategorie Segelboote.

2-6496.book Page 219 Tuesday, November 19, 2002 3:47 PM

Page 220: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

220

Und Sie dachten, es wäre schwierig ...

3 Wählen Sie erneut den Punkt Neuen Artikel aus dem Administrationsmenü.

4 Geben sie den Inhalt des Artikels – in unserem Fall der Bootsanzeige – ein (Abbildung 11.15). Wählen Sie als Thema Bootsmarkt und als Bereich Segelboote. Wählen Sie bei der Frage Auf der Startseite veröffentlichen? die Option Nein.

Abbildung 11.15: Neuer Artikel

5 Lassen Sie sich eine Vorschau Ihres Artikels anzeigen. Scrollen Sie dazu nach unten und wählen Sie aus der Optionsliste die Option Beitrags-Vorschau aus (Abbildung 11.16). Klicken Sie auf Ok!.

2-6496.book Page 220 Tuesday, November 19, 2002 3:47 PM

Page 221: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Schlussbemerkung

221

Abbildung 11.16: Die Vorschau-Funktion

6 Schauen Sie sich Ihren Artikel in der Vorschau an. Wenn alles korrekt ist, können Sie den Artikel speichern, indem Sie wieder zu der Optionsliste gehen, die Option Beitrag erstellen wählen und auf Ok! klicken.

Damit haben Sie alle Schritte getan, damit potenzielle Käufer die Bootsanzeige sehenkönnen. Am besten, Sie testen noch einmal, wie sich die Seite einem Surfer präsentiert,indem Sie sich ausloggen und im Modules-Menü den Eintrag Home wählen. Um zumBootsmarkt zu gelangen, müssen Sie unter Modules zunächst den Link Topics (The-men) wählen und dann Bootsmarkt auswählen.

11.7 SchlussbemerkungEs wäre vermessen zu behaupten, dass man ein Portal-System wie PHPNuke in einemKapitel erschöpfend behandeln und erläutern kann. Lassen Sie uns daher den Faktenins Auge blicken: Sie haben bisher nur an der Oberfläche gekratzt. Um alle Fähigkeitenvon PHPNuke darzustellen, wäre ein eigenes Buch nötig. Trotzdem wollte ich Ihnendiese tolle Software nicht vorenthalten und hoffe, dass ich Ihnen einen guten Start ge-ben konnte, sodass Sie selbst ein bisschen weiterbasteln können. So können Sie zumBeispiel die störenden englischen Begriffe im Modules-Menü durch deutsche ersetzen,indem sie in die Modul-Administration gehen und dort für die Module deutsche

PROF

ITIP

P Ist Ihnen aufgefallen, dass ich in dem Beispieltext der BootsanzeigeHTML-Tags benutzt habe? Auf diese Weise können Sie auch Bilder indie Artikel einbauen, indem Sie das img-Tag (<img src=“bild-datei.gif“>) von HTML benutzen.

2-6496.book Page 221 Tuesday, November 19, 2002 3:47 PM

Page 222: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

222

Und Sie dachten, es wäre schwierig ...

Namen vergeben. Sollten Sie PHP, HTML und CSS beherrschen, haben Sie die Mög-lichkeit, die Design-Vorlagen der PHPNuke-Themes selbst zu verändern, um dasErscheinungsbild der Seiten flexibel zu gestalten. Die Vorlagen finden Sie im themes-Verzeichnis in Ihrem phpnuke-Ordner.

Ergebnis dieses WorkshopsSie haben in diesem Workshop ein Portalsystem mit Content-Management-Funktio-nen benutzt, um eine professionelle Website schnell und elegant zu erstellen. Dasschöne ist nun, dass Sie den Inhalt einfach erweitern und ändern können, ohneHTML-Seiten anpassen zu müssen.

2-6496.book Page 222 Tuesday, November 19, 2002 3:47 PM

Page 223: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Anhang A

Farben in HTMLFarbname Hexadezimal

aliceblue #F0F8FF

antiquewhite #FAEBD7

aquamarine #7FFFD4

azure #F0FFFF

beige #F5F5DC

blueviolet #8A2BE2

brown #A52A2A

burlywood #DEB887

cadetblue #5F9EA0

chartreuse #7FFF00

chocolate #D2691E

coral #FF7F50

cornflowerblue #6495ED

cornsilk #FFF8DC

crimson #DC143C

darkblue #00008B

darkcyan #008B8B

darkgoldenrod #B8860B

darkgray #A9A9A9

darkgreen #006400

darkkhaki #BDB76B

2-6496.book Page 223 Tuesday, November 19, 2002 3:47 PM

Page 224: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

224

Farben in HTML

darkmagenta #8B008B

darkolivegreen #556B2F

darkorange #FF8C00

darkorchid #9932CC

darkred #8B0000

darksalmon #E9967A

darkseagreen #8FBC8F

darkslateblue #483D8B

darkslategray #2F4F4F

darkturquoise #00CED1

darkviolet #9400D3

deeppink #FF1493

deepskyblue #00BFFF

dimgray #696969

dodgerblue #1E90FF

firebrick #B22222

floralwhite #FFFAF0

forestgreen #228B22

gainsboro #DCDCDC

ghostwhite #F8F8FF

gold #FFD700

goldenrod #DAA520

greenyellow #ADFF2F

honeydew #F0FFF0

hotpink #FF69B4

indianred #CD5C5C

indigo #4B0082

ivory #FFFFF0

khaki #F0E68C

lavender #E6E6FA

lavenderblush #FFF0F5

lawngreen #7CFC00

lemonchiffon #FFFACD

Farbname Hexadezimal

2-6496.book Page 224 Tuesday, November 19, 2002 3:47 PM

Page 225: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Anhang A

225

lightblue #ADD8E6

lightcoral #F08080

lightcyan #E0FFFF

lightgoldenrodyellow #FAFAD2

lightgreen #90EE90

lightgrey #D3D3D3

lightpink #FFB6C1

lightsalmon #FFA07A

lightseagreen #20B2AA

lightskyblue #87CEFA

lightslategray #778899

lightsteelblue #B0C4DE

lightyellow #FFFFE0

limegreen #32CD32

linen #FAF0E6

mediumaquamarine #66CDAA

mediumblue #0000CD

mediumorchid #BA55D3

mediumpurple #9370D

mediumseagreen #3CB371

mediumslateblue #7B68EE

mediumspringgreen #00FA9A

mediumturquoise #48D1CC

mediumvioletred #C71585

midnightblue #191970

mintcream #F5FFFA

mistyrose #FFE4E1

moccasin #FFE4B5

navajowhite #FFDEAD

oldlace #FDF5E6

olivedrab #6B8E23

orange #FFA500

orangered #FF4500

Farbname Hexadezimal

2-6496.book Page 225 Tuesday, November 19, 2002 3:47 PM

Page 226: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

226

Farben in HTML

orchid #DA70D6

palegoldenrod #EEE8AA

palegreen #98FB98

paleturquoise #AFEEEE

palevioletred #DB7093

papayawhip #FFEFD5

peachpuff #FFDAB9

peru #CD853F

pink #FFC0CB

plum #DDA0DD

powderblue #B0E0E6

rosybrown #BC8F8F

royalblue #4169E1

saddlebrown #8B4513

salmon #FA8072

sandybrown #F4A460

seagreen #2E8B57

seashell #FFF5EE

sienna #A0522D

skyblue #87CEEB

slateblue #6A5ACD

slategray #708090

snow #FFFAFA

springgreen #00FF7F

steelblue #4682B4

tan #D2B48C

thistle #D8BFD8

tomato #FF6347

turquoise #40E0D0

violet #EE82EE

wheat #F5DEB3

whitesmoke #F5F5F5

yellowgreen #9ACD32

Farbname Hexadezimal

2-6496.book Page 226 Tuesday, November 19, 2002 3:47 PM

Page 227: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Anhang B

PHP nebenbei gelernt

Ein Crashkurs für furchtlose Programmierneulinge

Dieses Kapitel gibt Ihnen eine kurze, schnelle Einführung in PHP. Vorkenntnisse in ei-ner Programmiersprache sind dabei nicht notwendig. Es reicht, wenn Sie etwas HTMLGrundwissen besitzen.

In dieser kurzen Programmiereinführung können wir natürlich nur die wesentlichstenPunkte der Scriptsprache PHP ansprechen. Einige wichtige Themen wie zum Beispieldas objektorientierte Programmieren mit Klassen oder die Behandlung von Fehlernmüssen leider unter den Tisch fallen.

Jeder, der sich ernsthaft mit PHP beschäftigen will, sollte sich die ersten 15 Kapitel desPHP-Online-Handbuchs (http://www.php.net/manual/de) durchlesen oder sich einzusätzliches Buch über PHP-Programmierung zulegen. Zum Beispiel „Jetzt lerne ichMySQL & PHP“, Markt+Technik, ISBN 3-8272-6202-X. Danach heißt es dann üben,üben, üben. Denn Programmieren lernt man nicht beim Lesen, sondern hauptsächlichin der Praxis.

2-6496.book Page 227 Tuesday, November 19, 2002 3:47 PM

Page 228: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

228

PHP nebenbei gelernt

B.1 Das erste PHP-ScriptDas erste Programm, das man in einer neuen Programmiersprache schreibt, ist tradi-tionell ein Programm, das den Text „Hallo Welt“ ausgibt.

Dieses bekannte Beispiel sieht in PHP folgendermaßen aus:

<html> <body> <p> <?php echo “Hallo Welt!” ?> </body></html>

Das wollen Sie selbst sehen? Kein Problem, gehen Sie wie folgt vor:

1 Speichern Sie diese Datei unter hallowelt.php im Dokumentenverzeichnis ihres Webservers. Bei PHPTriad ist es das Verzeichnis C:\apache\htdocs, unter Linux/UNIX meist /usr/local/httpd/htdocs.

2 Öffnen Sie einen Webbrowser und geben die URL zu dieser Webseite auf Ihrem Rechner ein: http://localhost/hallowelt.php.

3 Auf dem Bildschirm sollte jetzt der Schriftzug „Hallo Welt“ erscheinen (Abbil-dung B.1). Wenn Sie sich den HTML-Quelltext im Browser anschauen, werden Sie feststellen, dass die Fragezeichen-Tags und der echo-Befehl verschwunden sind. Der PHP-Interpreter hat diese Befehle ausgeführt und stattdessen steht dort das Resultat des PHP-Aufrufs:

<html> <body> <p> Hallo Welt! </p> </body></html>

Abbildung B.1: Aufruf des „Hallo Welt“-Scripts

2-6496.book Page 228 Tuesday, November 19, 2002 3:47 PM

Page 229: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Grundlagen

229

Damit haben Sie den wichtigsten Schritt bereits geschafft. Alles, was jetzt noch folgt,ist eine reine Übungs- und Lernsache. Am besten legen Sie sich für die folgenden Bei-spiele ein Unterverzeichnis phptest im Dokumentenverzeichnis Ihres Webservers an,in das Sie die Beispiele speichern.

B.2 GrundlagenPHP ist eine eigenständige Scriptsprache, deren Syntax stark an C und Perl angelehntist. Wer bereits eine dieser Sprachen beherrscht (oder eine Sprache, deren Syntaxebenfalls von C abgeleitet ist, beispielsweise C++, Java oder JavaScript), wird beimEinstieg in PHP nur wenig Schwierigkeiten haben. Aber auch für Anfänger ohne jegli-che Programmiererfahrung ist PHP gut geeignet, um die wesentlichen Aspekte einerProgrammiersprache zu lernen. Die folgende Einführung setzt daher nur grundlegen-de HTML-Kenntnisse voraus.

PHP-EinbettungBei PHP-Dateien handelt es sich in den meisten Fällen um HTML-Dateien, in denen ei-nige, in manchen Fällen auch alle Ausgaben mit der Programmiersprache PHP erfolgen.Als Dateiendung verwenden wir die Standard-Extension *.php. In alten PHP-Implemen-tierungen findet man teilweise noch die Endung *.php3. Sie können in der Konfigurationihres Webservers aber auch jede andere Extension mit dem PHP-Aufruf verbinden.

Es gibt mehrere Möglichkeiten, PHP-Code in eine HTML-Seite zu integrieren. Der in-zwischen XML-konforme Standard ist die Verwendung von <?php als Start- und ?> alsEnd-Tag. Alles, was zwischen diesen Zeichen steht, führt das PHP-Modul aus. AlleAusgaben, die Sie innerhalb dieser Tags mit der PHP-Funktion echo oder print erzeu-gen, erscheinen an dieser Stelle im endgültigen HTML-Code und somit im Browser-fenster. Eine andere Variante ist die Verwendung des HTML-script-Tags:

<script language=”php”, runat="server"> echo "Hallo Welt!”; </script>

Diese Einbettung ist aber im Vergleich zu den anderen sehr lang und wird selten ver-wendet.

PROF

ITIP

P Es gibt noch zwei weitere Einbettungsarten: eine veraltete Variantemit <? .... ?> und die an die Active Server Pages angelehnte Vari-ante <% ... %>. Beide sollten Sie aus Kompatibilitätsgründen bessernicht verwenden.

2-6496.book Page 229 Tuesday, November 19, 2002 3:47 PM

Page 230: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

230

PHP nebenbei gelernt

KommentareKommentare sind Zusatzinformationen, die das Verstehen von Programmen erleich-tern sollen. PHP verwendet die gleiche Kommentarsyntax wie Java oder C++. EinKommentar beginnt mit /* und endet mit */. Alles, was zwischen diesen Zeichen steht,wird bei der Ausführung des Scripts ignoriert. Ein Beispiel:

<?php/* Hier beginnt die Ausgabe */echo "Hallo Welt! "; ?>

Sie können damit auch Kommentare über mehrere Zeilen erstellen. Sinnvoll ist dasbeispielsweise am Anfang eines längeren Programms:

<?php /* Name: Ausgabe-Programm Version: 2.1 Autor: Johann Müller letzte Änderung: 1.10.2002*/... langes Programm ...?>

Die zweite Kommentarvariante // erstellt einen Kommentar, der nur bis zum Zeilen-ende reicht.

echo "Hallo Welt!"; // eine Ausgabe

Ein Abschluss ist daher in diesem Fall nicht notwendig.

B.3 VariablenVariablen sind Platzhalter für Inhalte. Sie können Variablen Zeichenketten, Zahlen oderganze Texte zuweisen. In PHP beginnen alle Variablen mit einem Dollarzeichen. Danachfolgt der Variablenname, den Sie in Ihren Programmen frei wählen können. Der Namemuss mit einem Buchstaben oder einem Unterstrich beginnen und darf danach keineLeerzeichen oder Sonderzeichen außer dem Unterstrich (_) enthalten. Groß- und Klein-schreibung wird unterschieden. Außerdem dürfen Sie keinen der bereits von PHPvordefinierten Variablennamen verwenden. Beispiele für unterschiedliche korrekte Va-riablennamen sind $nachricht3, $der_ganze_text, $gehalt oder $Gehalt. Sinnvollerweisesollte man selbsterklärende Variablennamen verwenden und auf Abkürzungen (zumBeispiel $wbk_msg) verzichten, es sei denn, man hat ein sinnvolles System.

Mit dem Gleichheitszeichen können Sie Variablen einen Wert zuweisen. Dabei stehtlinks der Variablenname und rechts der Wert. Abgeschlossen wird diese Zuweisung inPHP immer mit einem Semikolon. Zeichenketten müssen Sie in Anführungszeichensetzen. Einige Beispiele:

2-6496.book Page 230 Tuesday, November 19, 2002 3:47 PM

Page 231: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Formularauswertung

231

$antwort="Mail wurde verschickt.";$gehalt=12000;$aktueller_preis=12.82;

Diese Variablen können Sie dann mit dem echo-Befehl ausgeben:

echo $antwort;

Innerhalb des echo-Befehls interpretiert PHP alle vorangestellten Dollarzeichen alsBeginn einer Variable. Das folgende Beispiel

echo "$antwort Das Gehalt ist $gehalt EUR. Der aktuelle Preis lautet $aktueller_preis EUR";

sorgt daher für die Ausgabe:

Die Mail wurde verschickt. Das Gehalt ist 12000 EUR. Der aktuelle Preis lautet 12.82 EUR

B.4 FormularauswertungDie Auswertung von Formularen ist eines der Standard-Einsatzgebiete von PHP undWebapplikationssprachen im Allgemeinen. Sie werden in Kapitel 5 mehr darüber er-fahren. Onlineformulare bestehen aus einer HTML-Seite mit den Formularfeldernund einer Datei für die Auswertung. Dieser Dateiname wird im action-Attribut desform-Tags angegeben. Außerdem gibt man im Attribut method die Methode der Da-tenübertragung an. Bei der Methode GET sendet der Browser die Formulardaten in-nerhalb der URL. Das sieht nicht nur unschön aus, sondern ist auch nur bei geringenDatenmengen bis insgesamt 2 Kbyte möglich. Bei der anderen Methode POST gibt eshingegen keine Beschränkung, da der Browser die Daten im Körper der Nachricht ver-sendet. Ein einfaches Beispiel für ein HTML-Formular mit zwei Feldern sieht folgen-dermaßen aus (Abbildung B.2):

<!–Datei formular.html –><html> <body> <form action="formauswertung.php" method="post"> <br> Vorname: <input type="text" name="vorname"> <br> Nachname:

PROF

ITIP

P

Wenn man nur eine Variable ausgeben möchte, ist es praktisch, zurEinbettung von PHP in HTML die Kurzform <?= $variable > zuverwenden.

2-6496.book Page 231 Tuesday, November 19, 2002 3:47 PM

Page 232: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

232

PHP nebenbei gelernt

<input type="text" name="nachname"> <input type="submit"> </form> </body></html>

Abbildung B.2: HTML-Formular

Die Auswertungsdatei formauswertung.php soll jetzt nichts weiter tun, als die eingege-benen Vor- und Nachnamen in einer Website mit zusätzlichem Text auszugeben (Ab-bildung B.3). Dazu reichen die bisher hier vermittelten PHP-Kenntnisse bereits aus.Die Inhalte von gesendeten Formularfeldern stehen in PHP unter dem in der HTML-Datei vergebenen Namen bereit. Wir können also ohne Variablenzuweisung einfachauf $vorname und $nachname zugreifen:

<!– Datei formauswertung.php –><html> <body> <?php echo "Hallo $vorname $nachname!<br>"; echo "Vorname: $vorname<br>"; echo "Nachname: $nachname<br>"; </body></html>

Abbildung B.3: Formularauswertung

2-6496.book Page 232 Tuesday, November 19, 2002 3:47 PM

Page 233: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Kontrollstrukturen

233

B.5 KontrollstrukturenJetzt wenden wir uns den Konstrukten zu, die es erlauben den Fluss innerhalb des Pro-gramms zu verändern.

Vergleiche und BedingungenUnser Auswertungsscript aus dem letzten Abschnitt hat noch einen Schönheitsfehler:Es erkennt nicht, wenn der Benutzer keine Daten eingegeben hat. Diese Überprüfungerfolgt am einfachsten mit dem Gleichheitsoperator == und einer if-Bedingung. Dieif-Bedingung besteht aus dem Schlüsselwort if und einer darauf folgenden Klam-mer, in der die Bedingung steht. In unserem Fall also aus folgenden Angaben:

if ($vorname == "")

Falls diese Bedingung wahr ist, wenn also die Variable vorname leer ist, wird der ingeschweiften Klammern folgende Programmblock ausgeführt:

if($vorname == "") { echo "Fehler: Kein Vorname eingetragen.";}

Innerhalb des Programmblocks können beliebig viele mit einem Semikolon abgeschlos-sene Befehle oder auch weitere Bedingungen mit weiteren internen Blöcken stehen.Wenn wie in unserem Fall der Programmblock nur aus einer Zeile besteht, kann man diegeschweiften Klammern auch weglassen. Sind keine geschweiften Klammern angegeben,führt PHP nach einer zutreffenden if-Bedingung nur die direkt folgende Zeile aus.

Neben dem Gleichheitsoperator gibt es auch den Ungleichheitsoperator !=. Damitkann man Bedingungen programmieren, die zutreffen, wenn ein bestimmter Fallnicht eintritt:

if($passwort != "fghe6TT2") echo "Falsches Passwort";

Mit einer if-else-Bedingung kann man in unserem Beispiel zusätzlich dafür sorgen,dass die Ausgabe von Vorname und Nachname jeweils nur dann erfolgt, wenn dieVariablen nicht leer sind. Der else-Teil der Bedingung wird immer dann ausgeführt,wenn die vorherige Bedingung nicht zutraf.

VORS

ICHT

!

Der Gleichheitsoperator verdient besondere Beachtung. Man sollteaufpassen, ihn nicht mit dem einfachen Zuweisungsoperator (=) zuverwechseln. Die Abfrage

if ($vorname = "")

trifft nämlich immer zu, da in der Bedingung der Variablen $vornameein leerer String zugewiesen wird.

2-6496.book Page 233 Tuesday, November 19, 2002 3:47 PM

Page 234: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

234

PHP nebenbei gelernt

if($vorname == "") { echo "Fehler: Kein Vorname eingetragen.";}else { echo "Vorname: $vorname";}

Außerdem kann man mit else-if mehrere Bedingungen hintereinander schalten.Damit lässt sich beispielsweise auf einen bestimmten Vornamen gesondert reagieren:

if($vorname == "") { echo "Fehler: Kein Vorname eingetragen."; }else if($vorname=="Knut") { echo "Ach du bist's Knut. Hallo.";}else { echo "Vorname: $vorname";}

Die else-if-Abfrage wird nur ausgeführt, wenn die erste if-Bedingung nicht zu-trifft. Trifft auch die else-if-Bedingung nicht zu, wird in jedem Fall der letzte mitelse gekennzeichnete Block ausgeführt. Sie können beliebig viele else-if-Bedin-gungen hintereinander schalten. Am Ende sollte aber immer ein else stehen, das injedem Fall ausgeführt wird.

for-SchleifeSchleifen dienen in Programmiersprachen zur Wiederholung von Abläufen. Am be-kanntesten ist die for-Schleife, die aus einem Anfangswert, einer Bedingung zur Wie-derholung und einem Ausdruck, der nach jedem Durchlauf der Schleife ausgeführtwird, besteht. Die Standardform für eine fünfmalige Wiederholung sieht folgender-maßen aus:

for ($i=0; $i < 5; $i++){ echo "Wiederholung Nummer: $i <br>";}

Vor dem ersten Durchlauf wird dabei die Variable $i auf den Wert 0 gesetzt. Anschlie-ßend führt PHP den in der geschweiften Klammer angegebenen Schleifenkörper solange aus, wie der Wert von $i kleiner als 5 ist. Nach jedem Durchlauf des Schleifen-körpers erfolgt mit dem Inkrementoperator $i++ eine Erhöhung von $i um den Wert1. Anstelle von $i++ hätten wir auch

$i = $i + 1;

schreiben können. Die Kurzform ist in vielen Fällen aber besser lesbar (analog dazugibt es den Operator - zum Heruntersetzen einer Variablen um den Wert 1, also $i– ).

2-6496.book Page 234 Tuesday, November 19, 2002 3:47 PM

Page 235: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Kontrollstrukturen

235

Die Ausgabe des Programms sieht dann folgendermaßen aus:

Wiederholung Nummer: 0Wiederholung Nummer: 1Wiederholung Nummer: 2Wiederholung Nummer: 3Wiederholung Nummer: 4

for-Schleifen setzt man hauptsächlich dann ein, wenn man vorher genau weiß oderberechnen kann, wie viele Durchläufe man benötigt.

Prinzipiell kann man eine for-Schleife auch leer lassen. Man erzeugt damit eine End-losschleife:

for( ; ; ) { // endlosscheife …… if($val == "stop') break; //ende}

Aus dieser Schleife kann man nur mit dem break-Befehl von PHP wieder ausbrechen.break beendet eine Schleife sofort. Die Programmausführung setzt nach dem Schleifen-körper wieder ein. Auch die Ausführung der im Folgenden erklärten while-Schleifenkann man mit break beenden.

while-Schleifewhile-Schleifen sind einfacher aufgebaut als for-Schleifen und bestehen lediglich auseiner Wiederholungsbedingung. Es folgt ein einfaches Beispiel, das ebenfalls eine fünf-malige Wiederholung einer Ausgabe erzeugt:

$i=O;while ($i < 5) { echo "Wiederholung Nummer: $i <br>"; $i++;}

Der Einsatz einer while-Schleife bietet sich immer dann an, wenn man nicht weiß,wie viele Wiederholungen man benötigt. Ein gutes Beispiel ist das Auslesen von Da-tensätzen nach einer Datenbankanfrage. In der Schleifenbedingung prüft man ab, obweitere Datensätze vorliegen. Im Schleifenkörper liest man dann jeweils einen Daten-satz aus. Diese Vorgehensweise bietet sich beispielsweise auch beim zeilenweisen Ein-lesen von großen Dateien an. Der folgende Code gibt den Inhalt der Datei namen.txt(muss sich im gleichen Verzeichnis befinden) zeilenweise aus:

$datei = fopen ("namen.txt", "r");while (!feof($datei)) { $zeile = fgets($fdatei); echo "$zeile <br>";}fclose ($datei);

2-6496.book Page 235 Tuesday, November 19, 2002 3:47 PM

Page 236: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

236

PHP nebenbei gelernt

Lassen Sie sich nicht von den unbekannten Funktionen verwirren – fopen (Datei öff-nen), fclose (Datei schließen) und fgets (Zeile einlesen) sind in der PHP-Referenz(http://www.php.net/manual/de/ref.filesystem.php) zusammen mit vielen anderen PHP-Funktionen erklärt. Diese Aufrufe müssen sie sich nicht merken, es genügt nachzuschla-gen, wenn Sie eine bestimmte Funktion benötigen.

Neu und wichtig ist allerdings das Ausrufezeichen in der Schleifenbedingung derwhile-Schleife. Es handelt sich dabei um den logischen Nicht-Operator. Die Funktionfeof($datei)überprüft, ob das Dateiende bereits erreicht ist. Als Ergebnis liefert dieFunktion entweder den Wert TRUE (Dateiende erreicht) oder den Wert FALSE (Datei-ende nicht erreicht) zurück. Beide Werte sind vordefinierte Variablen in PHP. TRUEentspricht dem Wert 1, FALSE dem Wert 0. Gibt man TRUE oder FALSE mit demecho-Befehl aus, erhält man als Ausgabe diese Zahlenwerte.

Durch den Nicht-Operator prüft PHP, ob der folgende Ausdruck nicht den Wert TRUEzurückliefert.

Man könnte also stattdessen auch schreiben:

while ( ! (feof($datei) == TRUE) )

Eleganter wäre Folgendes:

while (feof($datei) == FALSE)

Sie sehen, viele Wege führen zum Ziel. Welchen man benutzt, ist letztendlich eine Fragedes persönlichen Stils.

B.6 Operatoren

Arithmetische OperatorenMit arithmetischen Operatoren kann man Variablenwerte addieren, subtrahieren,dividieren und multiplizieren. Dabei ist es jedoch wichtig, zwischen den Variablen-typen zu unterscheiden. Im Gegensatz zu anderen Programmiersprachen erwartetPHP keine explizite Definition des Variablentyps. Stattdessen wird der Typ automa-tisch zugewiesen: „Hallo“ ist ein String, 7746 eine ganze Zahl und 12.82 eine Fließ-kommazahl. PHP erkennt den Typ bei der Zuweisung anhand der Anführungszeichen(String), Zahlenwerte (Integer) oder Zahlen mit Punkt (Fließkomma). Bei der Ver-wendung der arithmetischen Operatoren sollte man sich des Variablentyps bewusstsein. Zahlen addiert man einfach mit dem bekannten Plus-Operator:

$a = 534; $b = 223; $meine_summe = $a + $b;

2-6496.book Page 236 Tuesday, November 19, 2002 3:47 PM

Page 237: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Operatoren

237

Die weiteren Operatoren für die Grundrechenarten zeigt folgende Tabelle:

Auch die Verkettung und Verwendung von Zahlenwerten funktionieren wie im Mathe-matikunterricht:

$summe = 7761 - 243 + $a / 0.5 * 3;

Die Rangfolge der Operatoren ist ebenfalls genauso wie in der Schule geregelt: Multi-plikation und Division besitzen eine höhere Priorität als Addition und Subtraktion.4 + 2 * 5 ergibt logischerweise 14 und nicht 30. Wer eine andere Rangfolge benötigt,kann sich wie üblich mit Klammern behelfen.

Numerische Vergleichsoperatoren Für numerische Werte besitzt PHP Vergleichsoperatoren wie größer (>), größer gleich(>=), kleiner (<) und kleiner gleich (<=). In einem einfachen Beispiel soll der Benut-zer in einem Formular das Geburtsjahr eingeben (Abbildung B.4):

<html> <body> <form action="check_jahr.php" method="post"> Ihr Geburtsjahr <input type="text" name="jahr"> <input type="submit"> </form> </body></html>

Abbildung B.4:Formular zur Eingabe eines Geburtsdatums

Operator Bedeutung

+ Addition

- Subtraktion

* Multiplikation

/ Division

% Modulus (Rest einer Division)

2-6496.book Page 237 Tuesday, November 19, 2002 3:47 PM

Page 238: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

238

PHP nebenbei gelernt

In der Datei check_jahr.php kann man jetzt überprüfen, ob ein korrektes Jahr eingege-ben wurde, und das Alter des Benutzers ausgeben (Abbildung B.5):

<html> <body> <?php if($jahr < 1860) { echo "Fehler: So alt ist niemand"; }

else if($jahr > 2002) { echo "Fehler: Sie sind noch nicht geboren"; } else { $alter = 2002 - $jahr; echo "Sie sind $alter Jahre alt. "; } ?> </body></html>

Abbildung B.5:Ausgabe von check_jahr.php

Folgende Vergleichsoperatoren stehen in PHP zur Verfügung. Gleichheits- undUngleichheitsoperator gelten sowohl für Strings als auch für numerische Werte. DieGrößer- und Kleiner-Vergleiche machen nur bei Zahlenwerten Sinn.

Vergleichsoperator Bedeutung

== Gleichheit

!= Ungleichheit

<, <= Kleiner, kleiner gleich

>, >= Größer, größer gleich

2-6496.book Page 238 Tuesday, November 19, 2002 3:47 PM

Page 239: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Operatoren

239

Logische Operatoren Logische Operatoren dienen zum logischen Verknüpfen zweier Ausdrücke. Zur Verfü-gung stehen Und (&&), Oder (||), und Entweder oder (xor). Die Zeichen für die Oder-Verknüpfung erhalten Sie, wenn Sie einen doppelten senkrechten Strich ((AltGr)+(<)) eintippen.

Damit kann man beispielsweise unsere obige Geburtsjahranfrage in einer Oder-Bedin-gung unterbringen:

if( $jahr < 1860 || $jahr > 2001) { echo "Fehler: Ungültiges Geburtsjahr. ";}

Die Bedingung trifft also dann zu, wenn einer der beiden verknüpften Ausdrücke zu-trifft.

Man kann logische Operatoren beliebig miteinander verketten. Zur besseren Über-sicht sollte man dabei allerdings Klammern verwenden:

if( ($tag=="Montag" || $tag=="Dienstag") && $monat != "Dezember" )

Hier würde der Code innerhalb des if-Befehls an jedem Montag und Dienstag ausge-führt außer im Dezember.

Logischer Operator Bedeutung

$a && $b a und b müssen wahr sein.

$a || $b a oder b muss wahr sein.

$a xor $b Entweder a oder b muss wahr sein, aber nicht beide.

!$a a darf nicht wahr sein.

PROF

ITIP

P

Vergleichsoperatoren haben eine höhere Priorität als logische Operato-ren. Das heißt, PHP führt zuerst die Vergleiche und dann die logischenOperationen aus.

2-6496.book Page 239 Tuesday, November 19, 2002 3:47 PM

Page 240: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

240

PHP nebenbei gelernt

String-OperatorenStrings lassen sich nicht mit dem + -Operator verketten, so wie in anderen Sprachenüblich. Der Ausdruck

$a = "Hallo"; echo $a + " Welt"; //falsch

erzeugt nicht die erwartete Ausgabe „Hallo Welt“, sondern 0, da PHP die String-Varia-blen zuvor in einen Zahlenwert umwandelt. Folgerichtig sorgt die Anweisung

echo "17" + "12";

für die Ausgabe „24“.

Der korrekte Operator zum Verbinden von Strings in PHP ist ein Punkt:

$message = $nachrichtl . "Viele Grüße, Dein " . $name;

Verbindet man numerische Werte auf diese Weise, wandelt PHP die Zahlen automa-tisch in Strings um.

Für die anderen arithmetischen Operatoren gibt es bei Strings logischerweise keineentsprechende Variante. Dafür bietet PHP eine große Anzahl von String-Funktionen,mit denen man Strings komfortabel durchsuchen und verändern kann. Näheres dazufinden Sie in der PHP-Dokumentation.

Wichtig ist in Bezug auf Strings außerdem das Escape-Zeichen \. Damit lassen sich fol-gende Sonderzeichen in einen String einfügen:

Die Verwendung von Sonderzeichen bietet sich beispielsweise an, wenn man bei derAusgabe HTML-Code erzeugen möchte, der schön formatiert aussieht. Anstelle von

echo "<table> <tr> <td> Zeichen";

kann man mit

echo "<table>\n\t<tr>\n\t <td>Zeichen";

folgenden HTML-Code erzeugen:

<table> <tr> <td>Zeichen

Durch die Strukturierung ist der Code wesentlich lesbarer.

Escape-Sequenz Bedeutung

\n Zeilenumbruch

\t Tabulator

\\ Backslash

\$ Dollar-Zeichen

\” Anführungszeichen

2-6496.book Page 240 Tuesday, November 19, 2002 3:47 PM

Page 241: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Funktionen

241

B.7 FunktionenFunktionen sind eine der wesentlichen Abstraktionsmöglichkeiten beim Programmie-ren. Vereinfacht ausgedrückt ordnet man dabei einer bestimmten Abfolge von Aus-drücken einen Funktionsnamen zu. Die Dateifunktionen fopen() oder fclose(), die wirbereits kennen gelernt haben, sind gute Beispiele: Sie dienen zum Öffnen und Schließenvon Dateien. Wie das genau funktioniert, ist nicht weiter wichtig. Das Entscheidende ist,dass man diese Funktionen beliebig oft unter ihrem Namen aufrufen kann.

Funktionsdefinition und -aufrufVor dem ersten Aufruf muss man eine Funktion erst definieren. Unsere Funktion sollnicht anderes tun, als das bekannte „Hallo Welt“ auszugeben. Die Definition sieht fol-gendermaßen aus:

function hallowelt() { echo "<p>Hallo Welt!";}

Diese Funktionsdefinition alleine erzeugt keine Ausgabe. Der Funktionskörper wirderst bei einem Funktionsaufruf ausgeführt:

for($i=0; $i<l0; $i++) { hallowelt();}

Dieser Code gibt zehn Mal die schöne Begrüßung „Hallo Welt!“ aus.

Funktionsparameter und RückgabewerteSicher haben Sie sich gefragt, was die leere Klammer hinter dem Funktionsnamen soll.Die Lösung: Dort gibt man die Funktionsparameter an. Die „Hallo-Welt“-Funktionbesitzt keine Parameter, deshalb ist die Klammer leer. Parameter sind Variablen, diebeim Aufruf an die Funktion übergeben werden. Damit kann man beispielsweise eineFunktion programmieren, die Celsius-Werte in Fahrenheit umwandelt:

function cels_fahr($celsius) { $fahrenheit = ($celsius * 1.8) + 32; return($fahrenheit);}

Ein Aufruf dieser Funktion sieht beispielsweise folgendermaßen aus:

$ergebnis = cels_fahr(100);echo "100 Grad Celsius sind $ergebnis Grad Fahrenheit";

Als Funktionsparameter übergeben wir dabei den Wert 100. Dieser Wert wird beimAufruf in der Variable $celsius gespeichert und innerhalb der Funktion verwendet.Eine weitere Neuheit ist der Rückgabewert. Mit dem Befehl return verlässt man eine

2-6496.book Page 241 Tuesday, November 19, 2002 3:47 PM

Page 242: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

242

PHP nebenbei gelernt

Funktion. In Klammern kann man zusätzlich einen Rückgabewert zurückliefern. Die-ser Wert wird dann anstelle des Funktionsaufrufs ausgewertet.

In unserem Beispiel ist der Rückgabewert ein Zahlenwert. Man kann also mit diesemWert ganz normale Berechnungen anstellen:

$tausendfach_cels = 1000 * cels_fahr(100);

Die Umrechnungsfunktion erfüllt damit zwei Zwecke: Erstens vereinfacht sie die Um-wandlung der Werte, da man nicht immer die ganze Formel in den Programmcodeschreiben muss. Zweitens sorgt die Funktion für eine logische Abstraktion des Pro-gramms, da beim Lesen klar wird, dass eine Umrechnung von Celsius in Fahrenheitstattfindet.

Mit der Umrechungsfunktion ist es jetzt ein Leichtes, eine Webseite zu schreiben, dieeine Tabelle der Celsius-Werte von 0–100 (in 10er-Schritten) in Fahrenheit ausgibt(Abbildung B.6):

<html><body> <table> <tr><td>Celsius</td><td>Fahrenheit</td></tr> <?php function cels_fahr($celsius) { $fahrenheit = ($celsius * 1.8) + 32; return($fahrenheit); }

for($i=0; $i<=100; $i=$i+10) { echo "<tr>"; echo "<td align=right>$i </td>"; echo "<td align=right>".cels_fahr($i). "</td>"; echo "</tr>"; } ?> </table></body></html>

PROF

ITIP

P Wenn wir die Funktion

cels_fahr(100);

einfach nur aufrufen, findet die Berechnung zwar ebenfalls statt, derRückgabewert wird aber nicht verwendet und daher von PHP quasiweggeworfen.

2-6496.book Page 242 Tuesday, November 19, 2002 3:47 PM

Page 243: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Einbinden von Dateien

243

Abbildung B.6: Ausgabe von cels_fahr.php

Natürlich gibt es auch Funktionen mit mehr als einem Parameter. Die einzelnen Para-meter werden in der Funktion und beim Aufruf mit Kommata getrennt.

function viele_parameter($a, $b, $c, $d){ Code... }

B.8 Einbinden von DateienDie Funktion require ermöglicht das Einbinden von Dateien in den aktuellen PHP-Code. Sie sollten diese Möglichkeit vor allem dazu verwenden, um Funktionen, die Siehäufig benötigen, in eigene Dateien auszulagern. Diese Datei können Sie dann mitrequire(dateiname) oder include(dateiname)einbinden und auf die Funktio-nen zugreifen. Beispiel:

<?php/* in umrechnung.php sind diverse Funktionen definiert */require("umrechnung.php"); echo cels_fahr(100);?>

VORS

ICHT

!

Beim Aufruf dürfen Sie keinen Parameter weglassen, sonst erscheinteine Warnmeldung.

2-6496.book Page 243 Tuesday, November 19, 2002 3:47 PM

Page 244: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

244

PHP nebenbei gelernt

B.9 Globale und lokale VariablenSehen Sie sich einmal folgende Funktion zum Umrechnen von Euro in Dollar an:

function euro2dollar($euro) { return($euro * 0.92); }

Es wäre doch eleganter, den Dollarkurs (im Beispiel 0,92 Cent pro Euro) in einer eigenenVariablen außerhalb der Funktion zu speichern. Dann könnte man den Kurs leichterverändern, auch in anderen Funktionen verwenden oder auf der Webseite ausgeben.

Der logische Ansatz hierfür wäre:

<?php $dollarkurs=0.92;

function euro2dollar($euro) { return($euro * $dollarkurs); }

echo "100 Euro sind".euro2dollar(100)."Dollar";?>

Das funktioniert allerdings nicht. PHP erwartet nämlich, dass Sie in einer Funktion alleVariablen, die außerhalb der Funktion definiert wurden, zuerst mit dem Schlüsselwortglobal kennzeichnen:

$dollarkurs=0.92;

function euro2dollar($euro) { global $dollarkurs; return($euro * $dollarkurs); }

Die Variable $dollarkurs bezeichnet man daher auch als globale Variable. Auf dieseVariable kann man – da sie global, also außerhalb einer Funktion definiert wurde –innerhalb jeder Funktion zugreifen.

Lokale Variablen sind Variablen, die innerhalb einer Funktion definiert wurden. DieseVariablen stehen außerhalb der Funktion nicht zur Verfügung.

Der folgende Code gibt daher nur einmal den Text „Hallo“ aus.

function printhallo() { $nachricht="<p>Hallo"; echo $nachricht;}printhallo(); // ausgabe "Hallo"echo $nachricht; // keine ausgabe

2-6496.book Page 244 Tuesday, November 19, 2002 3:47 PM

Page 245: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Arrays

245

Beim zweiten echo-Aufruf außerhalb der Funktion ist die Variable $nachricht nichtdefiniert, da sie nur lokal innerhalb von printhallo() zur Verfügung steht.

B.10 ArraysEin wichtiger Datentyp in PHP sind Arrays. Dabei handelt es sich vereinfacht ausge-drückt um Variablen, die mit einem Index versehen sind und beliebig viele Inhaltegleichzeitig speichern können. Zum Beispiel:

$monat[0] = "Januar";$monat[1] = "Februar";$monat[2] = "März";

Verwendet man bei der Zuweisung eine leere Klammer, werden die Inhalte am Endedes Arrays hinzugefügt. Die weiteren Monate lassen sich also auch folgendermaßeneintragen:

$monat[] = "April";$monat[] = "Mai";

Der Zugriff auf die Array-Elemente erfolgt dann über den Index. $monat[3] liefertz.B. den Wert "April" zurück. Mit der PHP-Funktion count($monat) kann man dieAnzahl der gespeicherten Elemente errechnen lassen. Wir können damit eine for-Schleife programmieren, die alle Elemente ausgibt:

for($j=0; $j<count($monat); $j++) { echo $monat[j].”<br>”;}

Für den komfortablen Umgang mit Arrays existieren wie für viele andere Aufgabenauch jede Menge Funktionen. Diese können Sie bei Bedarf in der Online-Dokumen-tation nachschlagen.

B.11 Häufige Fehler

PHP-Datei nicht im Webserver aufgerufenDiesen Fehler macht man meist in Verbindung mit HTML-Formularen. Die Formu-lare zeigt der Browser korrekt an (sofern sie als HTML-Datei gespeichert wurden).Nach dem Absenden erscheint entweder gar nichts oder ein Teil des PHP-Codes.

2-6496.book Page 245 Tuesday, November 19, 2002 3:47 PM

Page 246: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

246

PHP nebenbei gelernt

Dollarzeichen vergessen Ohne Dollar keine Variablen. Leider interpretiert PHP dollarlose Variablen als Kon-stanten und gibt keine Fehlermeldung aus.

Falsche String-VerkettungStrings mit + zu verketten führt zu lauter Nullen in der Ausgabe.

Globale Variablen in Funktionen nicht deklariert In einer Funktion müssen Sie alle globalen Variablen, die Sie verwenden möchten, mitdem Schlüsselwort global definieren. Ansonsten sind diese Variablen leer und Sie er-halten falsche Ergebnisse.

PROF

ITIP

P

Achten Sie immer darauf, dass die URL im Browser mit HTTPbeginnt, und speichern Sie am besten keine HTML-, sondern nurnoch PHP-Dateien.

PROF

ITIP

P

Verwenden Sie so oft wie möglich Strings innerhalb von echo-Anführungszeichen, um sich die Verkettungen zu sparen.

PROF

ITIP

P

Deklarieren Sie jede globale Variable, die Sie benötigen, direkt amAnfang der Funktion.

2-6496.book Page 246 Tuesday, November 19, 2002 3:47 PM

Page 247: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Hilft mir denn keiner?

247

Zuweisung statt Identitätsprüfung Gleich ist nicht gleich: Wer in einer Bedingung aus Versehen = statt == verwendet,weist den dahinter stehenden Wert zu und braucht sich nicht zu wundern, wenn dieBedingung immer zutrifft.

Nicht-existente Formularvariablen Achten Sie auf die Namen der Formularfelder in der HTML-Datei. Bereits beimkleinsten Vertipper erhalten Sie leere Variableninhalte im PHP-Code und damit fal-sche Ergebnisse im Programm.

B.12 Hilft mir denn keiner?Keine Angst, Sie sind nicht allein. Der Open-Source-Gedanke, der PHP zu seinem Erfolgverholfen hat, sorgt auch im Web für einen umfassenden Fundus an Informationen,Scripts und Applikationen. Dieses Unterkapitel versorgt Sie mit den nötigen Informa-tionen, um die im Web angebotenen Hilfen effektiv nutzen zu können.

Die Mutter aller PHP-SeitenZentrale Anlaufstelle ist natürlich http://www.php.net. Auf dieser Seite steht die jeweilsaktuellste PHP-Version für UNIX/Linux und Windows zum kostenlosen Downloadzur Verfügung. Doch nicht nur die PHP-Sourcen findet man hier, sondern auch einumfangreiches Online-Manual der Scriptsprache, dessen Vielfalt kaum zu überbietenist. Neben der Online-Version in zwölf verschiedenen Sprachen gibt es in ebensovielen Sprachen eine druckerfreundliche Version ohne webtypische Zutaten. PHP-Programmierer können sich das Handbuch auch von einer eigenen Downloadseite, alsText-, PDF- oder Windows-Help-File, auf ihren PC laden. Selbst das DOCFormat desPalm Pilot steht zur Auswahl. Interessant ist vor allem die interaktive Variante desManuals. Hier können Leser Kommentare, Ergänzungen und Anmerkungen zu deneinzelnen Abschnitten hinzufügen. Es ist gewissermaßen ein Handbuch, das ständigfortgeschrieben wird. FAQs und eine Mailingliste ergänzen das Angebot der Site.

PROF

ITIP

P

Nach jeder Änderung der Formularfelder im HTML-Code sollten Siesofort auch die Namen im PHP-Code anpassen.

2-6496.book Page 247 Tuesday, November 19, 2002 3:47 PM

Page 248: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

248

PHP nebenbei gelernt

NewsgroupsAuch die PHP-relevanten Newsgroups sind eine hervorragende Wissensquelle. Allerdingsist der Zugang via Mail-Client oder Newsreader nicht jedermanns Sache. Es gibt jedochAlternativen: Über http://news.php.net kommt der Interessierte auf ein Webinterface,über das er Zugriff auf die relevanten Diskussionsrunden hat. Ein alternatives Webinter-face bietet die Suchmaschine Google. Unter der Adresse http://groups.google.com kannder Interessierte sogar gezielt mithilfe von Stichwörtern in diesem gigantischen Fundusrecherchieren, ohne die Browserumgebung verlassen zu müssen.

Wer mit Newsgroups überhaupt nichts am Hut hat, muss auf das dort angesammelteWissen dennoch nicht ganz verzichten. Auf der Seite http://www.dclp-faq.de sind die in-teressantesten Beiträge aus der deutschsprachigen Newsgruppe de.comp.lang.php zu einerinformativen und gut gegliederten Liste mit FAQs zusammengestellt (Abbildung B.7).

Abbildung B.7: Die FAQs auf www.dclp-faq.de

Deutsche WebseitenDie vorherrschende Sprache in der PHP-Gemeinde ist zwar Englisch, es gibt jedochauch viele deutschsprachige Websites mit informativen PHP-Inhalten. Auf der Seitehttp://www.phpwelt.de gibt es als zentrales Angebot eine umfangreiche und gut doku-mentierte Scriptsammlung mit über 1.000 Einträgen. Die Suche nach einem passen-den Provider erleichtert eine Datenbank mit über 100 Angeboten. Das PHP-Portalbietet darüber hinaus noch jede Menge Artikel, eine Jobbörse, ein Forum und Infosper E-Mail.

2-6496.book Page 248 Tuesday, November 19, 2002 3:47 PM

Page 249: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Hilft mir denn keiner?

249

Lohnenswert ist auch ein Besuch der Site http://www.phpCenter.de (Abbildung B.8).Das PHP-Center wurde im April 1999 mit dem Ziel gegründet, eine umfassendedeutschsprachige Ressource zur Scriptsprache PHP zur Verfügung zu stellen. PHP-Freaks finden hier Foren, Artikel, eine gut kommentierte und gegliederte Linksamm-lung sowie Fallstudien.

Abbildung B.8: Die Homepage von PHPCenter.de

Eine weitere deutschsprachige Pflichtadresse in Sachen PHP ist die Site http://www.dy-namic-webpages.de, auf der es aktuelle News, eine umfangreiche Scriptsammlung so-wie gut besuchte Foren gibt. Umfangreich, aber leider wenig strukturiert, ist dieLinksammlung zum Thema PHP. Besucher können jeden Link kommentieren.

Vor allem an PHP-Neulinge wendet sich die Seite http://www.php-homepage.de. An-fänger können sich mit ihren Fragen im gut besuchten Forum zu Wort melden. EinBlick auf die Einträge zeigt, dass kaum ein Statement unbeantwortet stehen bleibt.

Es gibt in Deutschland auch Gruppen und Vereine, die PHP auf ihre Fahnen geschrie-ben haben und die natürlich auch das Web als virtuelles Verlautbarungsorgan nutzen.Die PHP-Usergroup ist unter http://www.phpug.de zu finden.

2-6496.book Page 249 Tuesday, November 19, 2002 3:47 PM

Page 250: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

250

PHP nebenbei gelernt

Eine übersichtliche PHP-Scriptsammlung ist das Highlight auf der Seite http://www.php-guide.de. Etwas offizieller geht es im PHP e.V. zu. Der Verein wurde im Juli2001 gegründet. Ziel des Vereins ist es, die Verbreitung von PHP zu forcieren sowieInteressierten und Nutzern als Anlauf- und Kommunikationsstelle zu dienen. Durchdie Organisationsform des Vereins sollen Projekte ermöglicht werden, die Einzelper-sonen nur schwer in die Tat umsetzen können. Außerdem will der Verein Bildungsan-gebote für öffentliche Bildungseinrichtungen, Privatpersonen und Firmen anbieten,einen PHP-Almanach erstellen und einen jährlichen Wettbewerb zur Wahl des PHP-Projekts des Jahres ins Leben rufen.

Zusätzlich will man auf Messen und Kongressen PHP-Flagge zeigen sowie PHP-Tref-fen veranstalten. Interessierte können sich auf der Site http://www.php-ev.de über dieVereinsaktivitäten auf dem Laufenden halten.

Außer deutschen Seiten gibt es natürlich eine Fülle englischsprachiger Seiten im Inter-net. Erwähnenswert ist hier zum Beispiel die Scriptsammlung unter http://www.hot-scripts.com, die rund 2.500 Scripts beinhaltet. Im Mittelpunkt stehen natürlich dasDesign und die effiziente Programmierung dynamischer Websites. Weitere Seiten fin-den Sie in der folgenden Übersicht.

Übersicht über deutschsprachige Websites:

http://www.php-center.de

http://www.php-guide.de

http://www.dynamic-webpages.de

http://www.php-homepage.de

http://www.phpwelt.de

http://www.php-resource.dew

http://www.php-source.de

http://www.php4a11.net

http://www.phptutorials.de

http://www.php-tools.de

http://www.phpug.de

http://www.php-ev.de

2-6496.book Page 250 Tuesday, November 19, 2002 3:47 PM

Page 251: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Hilft mir denn keiner?

251

Übersicht über internationale Websites:

http://www.php.net

http://phpdeveloper.org

http://www.phpwizard.net

http://www.powie.de/pnews/index.php

http://www.phpbuilder.com

http://php.resourceindex.com

http://www.onlamp.com/php/

http://www.devshed.com/Server-Side/PHP/

http://php.weblogs.com

http://www.phpheaven.net

http://www.opendeveloper.org/PHP

http://www.websitetips.com/php/

http://www.hotscripts.com

http://www.zend.com

http://www.maguma.com

2-6496.book Page 251 Tuesday, November 19, 2002 3:47 PM

Page 252: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

2-6496.book Page 252 Tuesday, November 19, 2002 3:47 PM

Page 253: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Anhang C

Was ist Open-Source-Software?

Um dem Medienwirbel um die „Gratis"-Software ein wenig Aufklärung entgegen-zusetzen, wurde Ende 1998 die Open-Source-Initiative (OSI) gegründet (http://www.opensource.org). Sie hat sich zum Ziel gesetzt, mit den Gerüchten und Vorurtei-len aufzuräumen, die sich um freie Software rankten. Zu diesem Zweck wurde mitOpen Source ein neuer Begriff für „freie Software“ eingeführt und markenrechtlich ge-schützt. Außerdem hat die OSI klare Richtlinien für Open-Source-Softwarelizenzenaufgestellt. Diese Richtlinien beinhalten im Wesentlichen Folgendes:

Freie WeiterverbreitungDie Lizenz muss jedermann das Recht einräumen, die Software weiterzugeben, unab-hängig davon, ob dies gratis geschieht oder nicht.

QuellcodeDie Weiterverbreitung muss inklusive Quellcode geschehen.

Auf dem Programm basierende WerkeDie Lizenz muss die Veränderung des Originalprogramms und die Weiterverbreitungdes veränderten Programms unter den gleichen Bedingungen erlauben.

Integrität des OriginalcodesDie Verbreitung von veränderten Programmen darf nur eingeschränkt werden, wenndie Verbreitung von Patch-Dateien, also Dateien, die die Unterschiede zu den Origi-naldateien enthalten, gestattet ist. Die Lizenz kann andere Namen oder Versionsnum-mern von abgeleiteten Programmen verlangen.

Keine DiskriminierungDie Lizenz darf keine Personen oder Personengruppen von der Benutzung oder Ver-änderung des Programms ausschließen.

2-6496.book Page 253 Tuesday, November 19, 2002 3:47 PM

Page 254: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

254

Was ist Open-Source-Software?

Keine Einschränkung auf bestimmte AnwendungenDie Lizenz darf den Einsatz der Software für bestimmte Zwecke nicht verbieten.

Verbreitung der LizenzDie Bestimmungen der Lizenz müssen ohne zusätzliche Einschränkungen für jedengelten, der das Programm erhält.

Gültigkeit nur für ein bestimmtes Produkt Die Bestimmungen der Lizenz dürfen nicht davon abhängen, dass das Programm Teileiner bestimmten Softwaredistribution ist.

Keine Beeinträchtigung anderer SoftwareDie Lizenz darf andere Software nicht beeinträchtigen.

Lizenzen, die sich an diese Regeln halten, dürfen sich dann Open-Source-Lizenzennennen. Die Gründung der OSI hat dazu geführt, dass sich das Bild der Open-Source-Software änderte, und die Computerindustrie begann sich mit den neuen Gegebenhei-ten zu arrangieren.

2-6496.book Page 254 Tuesday, November 19, 2002 3:47 PM

Page 255: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Anhang D

TroubleshootingWer häufiger mit Computern zu tun hat, weiß aus Erfahrung, dass niemals alles glattgeht. Der Normalfall ist eher, dass Schwierigkeiten und Probleme auftauchen. Das istnatürlich immer eine Quelle von Frustration, aber man muss sich einfach damit abfin-den, dass auch Computer nicht perfekt sind und dass die größte Fehlerquelle meist vordem Computer sitzt.

Wenn Sie Hilfe benötigen, probieren Sie es als Erstes auf der Homepage des Scripts. Inallen Kapiteln weise ich auf Homepages und eventuelle Support-Foren hin.

Sie können mir bei schwerwiegenden Problemen auch eine E-Mail senden [email protected]. Ich kann Ihnen nicht versprechen, dass Sie immer soforteine Antwort erhalten, aber ich bemühe mich. Zusätzlich stellt Markt+Technik unterwww.mut.de/service/support.asp ein umfangreiches Support-Angebot zur Verfügung,in dem Sie ebenfalls Hilfe erhalten.

Ich möchte Ihnen im Folgenden noch ein paar häufige Stolpersteine vorstellen, auf dieSie vielleicht beim Ausprobieren der vorgestellten Scripts stoßen.

D.1 MySQL Demon und Apache gestartet?Damit Sie auf Ihrem lokalen Testsystem Scripts testen können, müssen der WebserverApache und der MySQL-Prozess laufen. Wenn Sie PHPTriad verwenden, können SieApache starten, indem Sie im Startmenü den Eintrag Start Apache unter Programs/PHPTriad/Apache Console wählen.

Unter Programs/PHPTriad/MySQL finden Sie zwei Einträge, von denen Sie einen aus-wählen müssen, um den MySQL-Hintergrundprozess zu starten. MySQL-D wählenSie für Windows 98/ME und MySQL-D-NT für Windows NT/2000/XP.

Falls der Webserver gestartet ist, erhalten Sie unter http://localhost eine Begrüßungs-meldung. Wenn der MySQL-Prozess läuft, können Sie sich mit dem Administrations-tool verbinden: http://localhost/phpmyadmin.

2-6496.book Page 255 Tuesday, November 19, 2002 3:47 PM

Page 256: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

256

Troubleshooting

D.2 Ist der MySQL-Benutzer „donald“ erzeugt worden?Für die meisten Scripts ist es erforderlich, eine Benutzerkennung anzugeben, unter derdas Script auf die MySQL-Datenbank zugreift. In Kapitel 2 wurde daher der Benutzerdonald angelegt. Wenn Sie das zweite Kapitel übersprungen haben, fehlt Ihnen dieserBenutzer. Lesen Sie in Kapitel 2 nach, wie Sie ihn erzeugen können.

Der MySQL-Zugang Ihres Webspaces benutzt wahrscheinlich eine andere Kennungals donald. Dann müssen Sie donald entsprechend ersetzen, wenn Sie die Scripts aufIhrem Webspace laufen lassen.

D.3 Winzip und .tar.gz-DateienEinige Archive auf der CD-ROM sind im .tar.gz-Format. Dieses Format ist von Winziplesbar, aber nur, wenn Sie es mit Winzip öffnen. Bei Doppelklick auf dieses Archivformatkann es sein, dass Windows nicht weiß, dass es diesen Dateityp mit Winzip öffnen soll.

D.4 Dateirechte auf dem WebspaceWenn Sie Dateien per FTP auf Ihren Webspace übertragen, werden Ihnen Standardrechtezugewiesen. Es kann sein, dass diese Standardrechte nicht ausreichen. Falls Sie eine Feh-lermeldung erhalten, die auf ein Rechteproblem schließen lässt, versuchen Sie die Rechtezu erhöhen. Die Rechte können Sie setzen, indem Sie Dateien im SmartFTP-Fenster aus-wählen und dann mit Rechtsklick ein Kontextmenü aufrufen. Dort wählen Sie den Ein-trag Properties/CHMOD. Im folgenden Fenster können Sie unter der Rubrik Permissionsdie Rechte verändern. Probieren Sie bei Problemen einmal aus, alle Rechte zu vergeben.Wenn es dann immer noch nicht läuft, lag es nicht an den Rechten. Wenn es aber funk-tioniert, lesen Sie in den jeweiligen Readme-Dateien der Scripts nach, ob spezielle Dateienbestimmte Rechte benötigen und ändern Sie die Rechte entsprechend ab.

D.5 Scriptkonfiguration für WebspaceWenn ein Script auf Ihrem lokalen Testsystem mit PHPTriad läuft und Sie alles soweitausgetestet haben, wollen Sie es wahrscheinlich auch auf Ihren Webspace übertragen.Wie Sie das mithilfe eines FTP-Programms machen, wurde bereits in Kapitel 1 erläu-tert. Wenn Sie alle Dateien überspielt haben, müssen Sie aber noch die Konfigurationanpassen, denn Sie wird in den wenigsten Fällen mit der Konfiguration Ihres lokalenSystems identisch sein. Wenn Sie die Konfiguration für Ihren Webspace anpassen,vergessen Sie nicht, die veränderte Konfigurationsdatei per FTP wieder auf IhrenWebspace zu übertragen.

2-6496.book Page 256 Tuesday, November 19, 2002 3:47 PM

Page 257: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

GlossarGlossar

Administrator

Verwalter eines Rechners oder einer Applikation, der zuständig ist für die korrekteFunktionsweise und für Problemlösungen aller Art.

Binärmodus

FTP-Programme wie SmartFTP kennen zwei verschiedene Übertragungsmodi für Da-teien: ASCII (Text) oder binär. Dokumente und Textdateien sollten im ASCII-Modusübertragen werden, Bilder oder ausführbare Programme dagegen im Binärmodus.Oftmals wird der Übertragungsmodus automatisch eingestellt.

Chatter-Slang

Umgangssprache für Chat-Räume im Internet, die hauptsächlich aus Abkürzungenund Bezeichnungen für Mimiken besteht.

CGI

Common Gateway Interface. Eine Art Übertragungsprotokoll bzw. Schnittstelle fürserverseitige Scripts. Diese werden dann in einer serverseitigen Programmiersprachewie Perl erstellt. Historisch gesehen ist CGI die älteste Technik, um Daten zwischenWebseiten und Webservern auszutauschen. HTML-Formulare können Daten an CGI-Programme schicken, die diese dann auswerten.

Cookie

Kleines Datenpaket, das vom Webserver geschickt wird und auf Ihrer Festplatte ge-speichert wird. Dadurch können Sie die Website später wieder identifizieren.

CSS

Cascading Style Sheets. Formatierungssprache für Stylesheets. CSS-Dateien haben dieDateiendung .css. CSS liegt mittlerweile in der Version 2.0 als Standard des W3C vor.

Domain

Eindeutiger Name für eine Website im Internet; beispielsweise in der Form http://www.domain.de.

2-6496.book Page 257 Tuesday, November 19, 2002 3:47 PM

Page 258: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

258

Glossar

E-Mail

Electronic Mail oder elektronische Post. Nachrichten, die über elektronische Datenwegeausgetauscht werden. Eine E-Mail-Adresse hat immer die Form [email protected],wobei toplevel für das Länderkürzel steht (in Deutschland de).

Fallunterscheidung

Auch Kontrollstruktur. In Programmiersprachen eingesetztes Mittel, um mehrere Be-dingungen zu überprüfen und je nach Zutreffen der Bedingung Anweisungen zu geben.

Formular

Eingabemaske, in die der Nutzer Dateien eintragen kann. Ein Formular besteht ausverschiedenen Elementen wie Kontrollkästchen, Pull-Down-Menüs und Textkästen.Zum Versand von Formularen wird eine serverseitige Programmiersprache wie ASP,PHP oder Perl verwendet.

FreeBSD

Freier Unix-Klon ähnlich wie Linux

Frame

Eine Webseite kann aus mehreren Teilen, so genannten Frames, bestehen. Beispielesind Navigationsleiste und Inhaltsframe. Jedes dieser Teile ist eine eigene HTML-Dateiund unabhängig von den übrigen Frames scrollbar.

FTP

File Transfer Protocol. Wird benutzt, um Dateien zwischen Rechnern im Internet aus-zutauschen.

GIF

CompuServe Graphics Interchange. Ursprünglich von CompuServe entwickeltes Bild-format, das im Internet eingesetzt wird. Es unterstützt nur 256 Farben und kann eineTransparenzfarbe besitzen. Mit einer Gif-Datei, die mehrere bilder enthält, lassen sichAnimationen realisieren. Der Kompressionsalgorithmus des Gif-Formats steht untereinem Patent von Unisys und muss daher von den Herstellern von Grafikprogrammenlizensiert werden.

IIS

Internet Information Server, Webserver von Microsoft

IP-Adresse

IP steht für Internet Protocol. Jeder Rechner im Internet hat eine eindeutige Adresse,die zurzeit 4 Byte groß ist und das Format x.x.x.x hat, wobei x zwischen 0–255 liegenkann.

2-6496.book Page 258 Tuesday, November 19, 2002 3:47 PM

Page 259: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Glossar

259

Java

Von Sun entwickelte Programmiersprache, die sich auf vielen Plattformen ausführenlässt (Windows, Unix, MacOS und andere). Dafür ist allerdings eine so genannte Vir-tual Machine nötig. Java gewinnt vor allem im serverseitigen Bereich an Bedeutung.Hier wird es in Form von Enterprise Java Beans und Java Servlets eingesetzt.

Java-Applet

Kleines Java-Programm, das innerhalb eines Browserfensters abläuft.

Java-Laufzeitumgebung

Auch Java Runtime Environment (JRE). Programmpaket, das installiert sein muss, umJava-Programme auszuführen.

JavaScript

Programmiersprache, die von Webbrowsern interpretiert wird. JavaScript ist eine Er-gänzung zu HTML und wurde von Netscape ins Leben gerufen. JavaScript enthältwichtige Funktionen zum Programmieren wie beispielsweise Schleifen und Variablen.

JPEG

Joint Photographic Experts Group. Dateiformat für das Web. JPEG hat eine verlust-behaftete Komprimierung und eignet sich besonders für Fotos und Grafiken mit vie-len Farbabstufungen.

Kommentar

Teil des Quellcodes einer Programmiersprache, der beim Ausführen ignoriert wird.Ein Kommentar soll normalerweise den Aufbau des Programms erläutern.

LAMP

Kombination aus Linux, Apache, MySQL und PHP

Link

Verweis von einer Webseite auf eine andere. Ein Link kann relativ (z.B. images) oderabsolut (http://www.mut.de) erfolgen.

Linux

Auf UNIX basierendes Betriebssystem, das als Open Source zur Verfügung gestelltwird und immer mehr Anhänger findet.

Localhost

URL für den lokalen Rechner. Entspricht der so genannten Loopback-Adresse127.0.0.1.

2-6496.book Page 259 Tuesday, November 19, 2002 3:47 PM

Page 260: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

260

Glossar

Mozilla

Open-Source-Projekt, das die Basis für den neuen Netscape Browser (Netscape 6 und7) gelegt hat. Das Besondere ist, dass der Quellcode offen liegt und sich jeder an derEntwicklung beteiligen kann. Den aktuellen Zwischenstand finden Sie unter http://www.mozilla.org.

MySQL

Datenbanksystem, das auf dem Open-Source-Gedanken basiert und somit frei erhält-lich ist. Bestandteil von PHPTriad und LAMP-Konfigurationen.

Netscape

Mittlerweile von AOL/Sun aufgekaufter Browserhersteller. Programmiert den Web-browser Netscape Navigator. Dieser liegt mittlerweile in Version 7 vor.

Newsgroups

Foren, in denen Neuigkeiten ausgetauscht werden und die es schon vor der Erfindungdes World Wide Webs gab.

Nickname

Spitzname zur Identifikation in Chats oder Foren

Open Source

Unter Open Source fallen Programme und Code, die offen zur Verfügung gestellt wer-den. Die Weiterverwendung von Open-Source-Software wird in Lizenzen wie bei-spielsweise GPL geregelt. Bekannte Open-Source-Projekt sind das BetriebssystemLinux, der Webserver Apache, die Datenbank MySQL und die Scriptsprache PHP.

Oracle

Bekanntes kommerzielles Datenbanksystem vom gleichnamigen Hersteller

Perl

Serverseitige Programmiersprache, die über sehr viele Möglichkeiten verfügt. Für Ein-steiger ist allerdings die Syntax schwerer zu erlernen als bei ASP oder PHP.

Plug-In

Erweiterung für einen Webbrowser oder für ein Programm, das zusätzliche Funktio-nalitäten bietet.

PHP

Serverseitige Programmiersprache, die auf Open Source basiert und mittlerweile auf-grund der Vielzahl an Möglichkeiten eine sehr weite Verbreitung gefunden hat.

2-6496.book Page 260 Tuesday, November 19, 2002 3:47 PM

Page 261: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Glossar

261

PNG

Portable Network Graphics. Format für Bilder im Web. Wurde entwickelt, um Copy-right-Probleme mit dem LZW-Algorithmus des GIF-Formats zu umgehen, hat sichdann aber über GIF hinausentwickelt. Unterstützt als PNG-2 zwei Farben, als PNG-416, als PNG-6 128 und als PNG-8 256 Farben. PNG-24 beinhaltet 16,8 Millionen Far-ben, dafür werden die Bilddateien auch deutlich größer. PNGs werden verlustfreikomprimiert und erlauben Transparenz sowie Animationen (was noch nicht von allenBrowsern unterstützt wird).

Primärschlüssel

Wert in einer Spalte einer Datenbanktabelle, der die zugehörige Zeile dieser Daten-banktabelle eindeutig bestimmt.

Provider

Firma, die Ihnen den Zugang zum Internet ermöglicht. Beispiele sind T-Online, AOLoder freenet.

Quellcode

Auch Programmcode oder Sourcecode. Rohform eines Programmes in einer Pro-grammiersprache. Seitenbeschreibungssprachen wie HTML und Skriptsprachen wieJavaScript und PHP müssen nicht kompiliert (in ausführbare Programme verwandelt)werden, deshalb ist ihr Quellcode immer zugänglich.

RGB-Farbsystem

RGB steht für Rot, Grün und Blau, die drei Farbanteile des Farbsystems. Das RGB-Farbsystem fügt die drei Farbkanäle zusammen und bildet daraus die Farben. Es wirdbeispielsweise von Monitoren eingesetzt..

Schleife

Wird in Programmiersprachen eingesetzt. Wiederholtes Ausführen einer Anweisung,bis eine bei jedem Durchlauf überprüfte Bedingung nicht mehr zutrifft.

serverseitig

Eine Aktion, die auf dem Server ausgeführt wird.

SMTP

Simple Mail Transfer Protocol. Protokoll, das es ermöglicht, E-Mails zu versendenund weiterzuleiten. Wird von einem Mailserver benutzt. Ein bekannter Vertreter einerSMTP-Serversoftware ist sendmail.

Solaris

Bekanntes kommerzielles Betriebssystem von Sun, das auf UNIX basiert.

2-6496.book Page 261 Tuesday, November 19, 2002 3:47 PM

Page 262: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

262

Glossar

Stil

Auch Stil-Befehl. Eine Anweisung in einem Stylesheet, die eine bestimmte Formatie-rung vornimmt. Ein Stil kann, genau wie ein HTML-Attribut, einen Wert annehmen.Der Wert enthält die eigentliche Formatierung.

Stylesheets

Stylesheets dienen in HTML-Seiten als Ergänzung zur Formatierung und Positionie-rung von Elementen. Stylesheets können an zentraler Stelle definiert und auf verschie-dene Bereiche angewendet werden. Dann nennt man sie externe Stylesheets. FürStylesheets muss eine spezielle Sprache eingesetzt werden. Bei HTML-Seiten ist dasnormalerweise CSS. Für XML heißt die Stylesheet-Sprache XSL.

SVG

Scalable Vector Graphics. Auf XML basierende Beschreibungssprache zum Erstellenvon Vektorgrafiken und Vektoranimationen für das Web. Hauptsächlich von Adobeals Konkurrenz zu Macromedias proprietärem Flash-Format unterstützt.

Tabelle

Eine Tabelle in HTML besteht aus Zeilen mit Zellen. Die Zellen bilden natürlich eben-falls Spalten, die aber nicht explizit definiert werden. Neben dem klassischen Einsatzals Layout-Element können Tabellen auch zum Positionieren von Objekten und zumStrukturieren einer Webseite verwendet werden.

Tag

Jeder HTML-Befehl wird als Tag bezeichnet. Die meisten Tags bestehen aus einemAnfangs-Tag und einem End-Tag. Eine Ausnahme ist zum Beispiel das <br>-Tag. EinTag kann mehrere Attribute enthalten.

URL

Uniform Ressource Locator. Die Internetadresse, die man bei einem absoluten Linkangeben muss, beispielsweise http://www.pearson.de.

Variable

Datenspeicher in einer Programmiersprache, der seinen Wert ändern kann.

Web

Das World Wide Web (WWW oder W3) ist der grafische Teil des Internets. Um Seitendes World Wide Web betrachten zu können, benötigen Sie einen Webbrowser, der dieHTML-Seiten rendert.

2-6496.book Page 262 Tuesday, November 19, 2002 3:47 PM

Page 263: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

Glossar

263

Webbrowser

Der Webbrowser stellt die HTML-Seiten dar. Dazu interpretiert er den HTML-Codeund rendert die Seite. Zusätzlich stellt er die mitgelieferten Grafiken dar. Mit Plug-Ins,die manchmal zum Standardumfang gehören, lassen sich zusätzliche Formate wie bei-spielsweise Flash oder SVG darstellen.

Webseite

Einzelne HTML-Seite mit den dazugehörigen Bildern. Eine Webseite ist meist Teileiner Website.

Webserver

Rechner, der ständig an das Internet angebunden ist. Per URL kann jeder Nutzer mitInternetanschluss auf die Webseiten auf dem Webserver zugreifen. Um Daten auf denWebserver zu laden, wird meist FTP eingesetzt.

Andere Bedeutung:

Das Programm, das auf dem Server liegt. Eine Art Application-Server, der verschiede-ne Dienste und Funktionen wie serverseitige Programmiersprachen zur Verfügungstellt und die HTML-Seiten inklusive Grafiken, Stylesheets sowie Scripts an den Nut-zer schickt. Beispiele sind Apache und der Microsoft Internet Information Server (IIS).

Websichere Farben

Ursprünglich von Netscape entwickelte Farbpalette mit 216 Farben, die es sowohl aufdem Macintosh als auch unter Windows gibt. In der Praxis spielt diese Palette keinegroße Rolle mehr, da die meisten Rechner mehr als 256 Farben unterstützen. Solltedies nicht der Fall sein, ist in der Regel auch der Webbrowser in der Lage, fehlende Far-ben aus anderen zusammenzusetzen (Dithering).

Website

Komplettes Internetangebot, das sich unter einem Domainnamen verbirgt. Eine Web-site besteht aus mehreren Webseiten. Die Einstiegsseite wird als Homepage bezeichnet.

Webspace

Festplattenplatz auf einem Webserver im Internet. Wird von so genannten Hosternangeboten, die oft auch Provider sind.

Wert

Der Wert ist die Information, die einem Attribut zugewiesen wird. Ein Wert kann ausZahlen oder Zeichen bestehen. Dies hängt von der Art des Attributs ab.

Zip-Archiv

Archivdatei, die komprimierte Dateibäume enthält. Kann mit Programmen wie Win-Zip gelesen und entpackt werden.

2-6496.book Page 263 Tuesday, November 19, 2002 3:47 PM

Page 264: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

2-6496.book Page 264 Tuesday, November 19, 2002 3:47 PM

Page 265: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

265

Stichwortverzeichnis

Stichwortverzeichnis

A

Absender-E-Mail-Adresse 65Administrator 56Admin-User 56Advanced Poll 163

Administration 168Admin-User 165Datenbankanbindung 164Einstellungen 170Installation 164Installationsassistent 165Supportforum 183Template-Rubriken 181Templates 176

Aktivieren der Statistikfunktion 46AOL 22Apache 16

B

Balkendiagramm 90Bericht erstellen 46Bestätigungsseite 75Besucherstatistik 39Bilderzeugung 84Bildformat 95Bootsmarkt 218

C

Channel 150erstellen 152

Chat 141Chat-Hygiene 153Chatter ignorieren 154Chatter-Slang 128, 149closeConToDB 101connectToDB 100Content-Management-System 203

CounterCaffe 39CSS 58

D

dataFromDB.php 100dataFromTable 101Dateirechte 35, 256Dateitransfer 26Datenbank 18

erzeugen 27Datenbankbenutzer 40Datenbankdump 27Datenquelle 96Datentyp 71Diagramme 83Diagrammrand 95Dump 27

E

echo 73E-Mail-Vorlage 79

F

FAQs 28Farbverlauf 94Feedback 49Fehlermeldungen 70FormProcessor 63Formulardaten 63

überprüfen 68Forum 185

Antworten 195Beitrag erstellen 194einrichten 192Missbrauch 196Nachrichtentexte 194Verfasser 194

2-6496.book Page 265 Tuesday, November 19, 2002 3:47 PM

Page 266: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

266

Stichwortverzeichnis

Fotoalbum 105Bilder hinzufügen 111Eigenschaften 113erstellen 110Hintergrundfarbe 113Voreinstellung 109

Fotos 83, 105Fotosammlung 116Freeware 31FTP 24

G

Gallery 105Benutzer anlegen 113Grundeinstellungen 108Homepage 107Installationsroutine 107Rechtesystem 113sichern 110

Gallery Remote 116Installation 116

Gästebuch 49Farben 59Layout und Design 58

GD-Modul 84Glühen 51Grafiken 83

H

Hintergrundprozess 19Hoster 22hostweb 22Hotnews-Script 138htaccess-Dateien 144HTTP-Header 172

I

IIS 13, 17include-Anweisung 36Integer 71

J

Java Runtime Environment 116Java Virtual Machine 117Java-Laufzeitumgebung 38JEdit 38JpGraph 83

Grundfunktionalität 88Handbuch 103Installationsverzeichnis 88Modul 88Webseite 102

JRE 116JVM 117

K

Kommentare abgeben 55Kreditkartennummer 69

L

Line-ChartModul 88

LiniendiagrammModul 89

localhost 17

M

Manipulation von Bildern 107Marktdurchdringung von PHP 29Mehrere Formulare 76MS SQL Server 186MySQL 18, 30

4.0 30Benutzerkennung 41Monitor 20

N

NetPBM 107Neuigkeiten 121Newseintrag bearbeiten 127

2-6496.book Page 266 Tuesday, November 19, 2002 3:47 PM

Page 267: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

267

Stichwortverzeichnis

Newseintrag erstellen 126Newsfader 133Newsgroups 186Newsscroller 133News-System 121Newsticker 134Newstyper 134Nicknames

Datenbank 146

O

Open Source 29Oracle 13, 30Outlook 64

P

Passwort ändern 57Paten 152Persönlicher Channel 155Phorm 63Phorum 186

Admininstrations-Tool 190Admin-User 189Anpassen des Layouts 197Badword-Liste 196Benutzer anzulegen 196Datenbank-Einstellungen 188Erweiterungen 201Farben 197Installation 187Installationsscript 188IP sperren 196Namen sperren 196Navigationstexte 197Sprachdefinition 190Supportforum 201Voreinstellungen 197Zugangskennung 196

PHP 18Module 84

php.ini 65PHP-Konfigurationsdatei 65phpMyAdmin 20PHPNuke 204

Administrationsseite 206Administrator 206Artikel schreiben 218Benutzerrechte 218Blöcke 210Datenbankeinstellungen 205Design-Vorlage 209Einstellungen ändern 208Installation 205Module aktivieren 211Spracheinstellungen 209Template ändern 213Vorschaufunktion 220

PHPOpenChat 141Administrationsseite 150Anpassen des Layouts 156Datenbank 145Frame-Größe 161Hintergrundfarbe 157Inhalt kontrollieren 153Installationsscript 143Login-Formular 158Sprache 146Style-Anweisungen 161Template-Dateien 160Thema 150

PHPTriad 13Pinnwand 185PostgreSQL 186Primärschlüssel 70

R

Radardiagramm 92Redaktionssystem 218Regeln 68Regelwidrige Eingabe 70

2-6496.book Page 267 Tuesday, November 19, 2002 3:47 PM

Page 268: Meine dynamische Website mit PHP, MySQL und Apache  GERMAN

268

Stichwortverzeichnis

S

Schimpfwörter verbieten 153Schlagzeilen 132Schreibrechte 34Schutzmechanismen 196Scriptkonfiguration 256Seitenzähler 31SimpleNews 121

Darstellungsweisen 132Datenbanktabellen 124einbinden 136Installationsscript 124Kategorie wechseln 127Layout und Design 129Seitenkopf 136Titelgrafiken 128

Skriptsprache 28SmartFTP 24Smileys 149SMTP Server 64Spitzname 147SQL 19Statistikdaten 45Sternenhintergrund 135Style Sheets 58Suchfunktion 55Suchkriterium 55Support-Angebot 255Sybase 186

T

Tachometer 32tar.gz-Dateien 256Task Manager 19Texteditor 38, 154Textpad 38Textskala 95time() 73T-Online 22Tortendiagramm 91Transaktionen 30Tripod 23Troubleshooting 255

U

Umfragen 163einbetten 171erstellen 168Kommentare 170löschen 169Vorlage 176zwei nebeneinander 175

Unsichtbares Formularfeld 73Unwörter 154

V

varchar 71Verbotene Wörter 154Verbreitung von PHP 29very important person 57VIP 57Vorlagendatei 79Vorschau-Funktion 181Votings 163

W

Wahlergebnisse 96Webforen 186Webportal 204Webserver 16Webspace 22

X

X-AchseBeschriftungen 95

xCount 32

Z

Zahlenskala 95Zähler 34Zeilenumbrüche 154Zeitunterschied 52Zeitzonen 51Ziffernset 37Zuordnung 73

2-6496.book Page 268 Tuesday, November 19, 2002 3:47 PM