PHP 4. Grundlagen und Profiwissen GERMAN

1157
Vorwort zur neuen Auflage für PHP4 Mit der Version 4 ist PHP endgültig zu einer reifen und umfassenden Programmiersprache für das Web geworden. Der Umfang der Sprache lässt den Schluss zu, dass PHP die führende Sprache im Web werden kann. Eine klare, einfach zu verstehende Syntax und starke Funktio- nen mit hoher Spezialisierung sind der beste Weg, auch ungeübte »Quereinsteiger« schnell zu Erfolgen zu führen. Eine komplexe Sprache verlangt nach einer klaren Darstellung. Das Online-Handbuch ist, zumal nur zögerlich übersetzt, den meisten keine besonders gute Hilfe. Mit dem vorliegenden Buch habe ich versucht, die Sprache vollständig und bedarfsgerecht aufzubereiten. Zum einen ist der einführende Teil weiter ausgebaut worden, zum anderen ist die Referenz nun tatsäch- lich vollständig (was auch exotische Funktionen betrifft). Die Systematik wurde weiter verbes- sert, eine Vielzahl von Querverweisen erleichtert die Navigation, vor allem auch in der Refe- renz. Kapitel- und Abschnittsanfänge sind noch konsequenter mit einer einleitenden Über- schrift versehen worden. So kann man sich oft das »Anlesen« auf der Suche nach bestimmten Funktionen ersparen. Im Profiteil kamen einige Beispiele hinzu, die den Einstieg vor allem für »fast« Fortgeschrittene erleichtern und den Anspruch eines Lösungsbuches unterstreichen – letztendlich ist die fertige Applikation in kürzester Zeit das Ziel – Abschreiben ist ausdrück- lich erwünscht. PHP4 ist nun vollständig und vor allem auf Grund der Final Version implementiert. Im Ge- gensatz zu Beta-Versionen wird hier die Darstellung der Endversion gezeigt, wie sie auch bei Providern im Einsatz ist. Trotzdem wird die Umstellung nur zögerlich vonstatten gehen, vor allem auch, weil einige Skripte geändert werden müssen und Provider kaum zwangsweise eine Umstellung verfügen. Die Realität ist also eine langjährige Koexistenz zwischen PHP3 und PHP4. In diesem Buch wird diese Koexistenz ebenso abgebildet. Ohne Kennzeichnung sind die gezeigten Funktionen in beiden Versionen verfügbar. Was in PHP4 neu hinzukam, wird durch das PHP4-Symbol gekennzeichnet. Was in PHP4 nicht mehr gültig ist, bekam das PHP3-Siegel. Diese Kennzeichnung finden Sie natürlich auch in der Referenz. Sie können das Buch deshalb auch uneingeschränkt als PHP3-Buch ansehen. Eine sehr emotionale Diskussion wird immer wieder um die Plattformfrage geführt. Hier gibt es sicher verschiedene Szenarien. Was immer Sie tun, nehmen Sie die Plattform, auf der Sie sich »zu Hause« fühlen. Ich habe die am häufigsten verwendete Plattform-Kombination als Grundlage zum Schreiben genommen: Windows als Entwicklungsumgebung, Linux für den Webserver. Falls Sie Linux zur Entwicklung nutzen, werden Sie selbst besser wissen, wie Sie damit umgehen. Ich hoffe, Sie sind damit gut auf PHP4 eingestimmt und können schnell gute Skripte entwi- ckeln. Für Feedback jeder Art gilt unverändert der E-Mail-Kontakt: [email protected]. Jörg Krause Berlin, im Oktober 2000

Transcript of PHP 4. Grundlagen und Profiwissen GERMAN

  • Vorwort 5

    Vorwort zur neuen Auflage fr PHP4

    Mit der Version 4 ist PHP endgltig zu einer reifen und umfassenden Programmiersprache fr das Web geworden. Der Umfang der Sprache lsst den Schluss zu, dass PHP die fhrende Sprache im Web werden kann. Eine klare, einfach zu verstehende Syntax und starke Funktio-nen mit hoher Spezialisierung sind der beste Weg, auch ungebte Quereinsteiger schnell zu Erfolgen zu fhren.

    Eine komplexe Sprache verlangt nach einer klaren Darstellung. Das Online-Handbuch ist, zumal nur zgerlich bersetzt, den meisten keine besonders gute Hilfe. Mit dem vorliegenden Buch habe ich versucht, die Sprache vollstndig und bedarfsgerecht aufzubereiten. Zum einen ist der einfhrende Teil weiter ausgebaut worden, zum anderen ist die Referenz nun tatsch-lich vollstndig (was auch exotische Funktionen betrifft). Die Systematik wurde weiter verbes-sert, eine Vielzahl von Querverweisen erleichtert die Navigation, vor allem auch in der Refe-renz. Kapitel- und Abschnittsanfnge sind noch konsequenter mit einer einleitenden ber-schrift versehen worden. So kann man sich oft das Anlesen auf der Suche nach bestimmten Funktionen ersparen. Im Profiteil kamen einige Beispiele hinzu, die den Einstieg vor allem fr fast Fortgeschrittene erleichtern und den Anspruch eines Lsungsbuches unterstreichen letztendlich ist die fertige Applikation in krzester Zeit das Ziel Abschreiben ist ausdrck-lich erwnscht.

    PHP4 ist nun vollstndig und vor allem auf Grund der Final Version implementiert. Im Ge-gensatz zu Beta-Versionen wird hier die Darstellung der Endversion gezeigt, wie sie auch bei Providern im Einsatz ist. Trotzdem wird die Umstellung nur zgerlich vonstatten gehen, vor allem auch, weil einige Skripte gendert werden mssen und Provider kaum zwangsweise eine Umstellung verfgen. Die Realitt ist also eine langjhrige Koexistenz zwischen PHP3 und PHP4. In diesem Buch wird diese Koexistenz ebenso abgebildet. Ohne Kennzeichnung sind die gezeigten Funktionen in beiden Versionen verfgbar. Was in PHP4 neu hinzukam, wird durch das PHP4-Symbol gekennzeichnet. Was in PHP4 nicht mehr gltig ist, bekam das PHP3-Siegel. Diese Kennzeichnung finden Sie natrlich auch in der Referenz. Sie knnen das Buch deshalb auch uneingeschrnkt als PHP3-Buch ansehen.

    Eine sehr emotionale Diskussion wird immer wieder um die Plattformfrage gefhrt. Hier gibt es sicher verschiedene Szenarien. Was immer Sie tun, nehmen Sie die Plattform, auf der Sie sich zu Hause fhlen. Ich habe die am hufigsten verwendete Plattform-Kombination als Grundlage zum Schreiben genommen: Windows als Entwicklungsumgebung, Linux fr den Webserver. Falls Sie Linux zur Entwicklung nutzen, werden Sie selbst besser wissen, wie Sie damit umgehen.

    Ich hoffe, Sie sind damit gut auf PHP4 eingestimmt und knnen schnell gute Skripte entwi-ckeln. Fr Feedback jeder Art gilt unverndert der E-Mail-Kontakt: [email protected].

    Jrg Krause

    Berlin, im Oktober 2000

  • 6 Vorwort

    Vorwort

    Vor einigen Jahren war das Informationszeitalter noch eine Idee, die irgendwann Gestalt an-nehmen wrde und fr viele in weiter Ferne lag. Erste Vorboten, wie der Personal Computer oder das Handy wurden zwar begeistert aufgenommen, dass sich jedoch die konomischen Grundpfeiler der Gesellschaft ndern sollten, glaubte kaum jemand.

    Das Internet hat in letzter Zeit diese Einschtzung verdrngt. Mit geradezu atemberaubender Macht erobert es die Wirtschaft. Noch nie erreichte eine technische Innovation die Welt mit derartiger Geschwindigkeit. Die Umwlzungen werden in den nchsten Jahrzehnten noch schneller und massiver vonstatten gehen.

    Mit dem Eindringen in immer neue Bereiche entstehen schnell neue, innovative Ideen. Die technische Plattform ist bei der Umsetzung enorm wichtig. Aus den ersten Versuchen, das Web programmierbar zu machen, sind inzwischen erwachsene Applikationen geworden Entwicklungssysteme , die eine Umsetzung von Ideen realistisch erscheinen lassen, die vor kurzem noch als unmglich galten.

    Auf dieser Basis ist PHP entstanden. Von allem nur das Beste knnte man sagen, die perfekte Sprache frs Web. Als Kunstsprache vermeidet sie alle Fehler anderer Anstze. Ein kurzer Vergleich mit den potenziellen Wettbewerbern sei angebracht. Perl wurde als Reportsprache zur Behandlung von Zeichenketten entwickelt, viele Jahre bevor das Web kam. Da HTML-Seiten auch als Zeichenketten gesehen werden knnen, bot Perl eine gute Untersttzung beim Umgang damit. Dies fhrte zu der groen Popularitt. Optimal ist Perl dagegen keineswegs, denn die Sprache ist schwer erlernbar und fr kleine Projekte, die oft auch von Nicht-Programmierern umgesetzt werden mssen, zu abstrakt. hnlich sperrig erwies sich Java, erst vor kurzem wurde die Serverprogrammierung als Bettigungsfeld erkannt. Einem Designer die Vorzge der Java-Servlets nahe zu bringen ist aber eine echte Herausforderung. Mit Acti-ve Server Pages mischt auch Global Player Microsoft mit, basierend auf der verbreiteten Pro-grammiersprache Visual Basic. Der Ansatz bietet zumindest hinreichende Einfachheit, so dass sich ASP einem groen Nutzerkreis erschliet. Mngel im Detail werden bei greren Projek-ten erkennbar. Die Ursachen liegen in der Historie der Sprache und drften sich kaum beseiti-gen lassen.

    PHP ist das Beste aus allen Welten. Mit der bekannten Syntax von C, der Einfachheit von ASP und der Leistungsfhigkeit von Perl steht eine Sprache zur Verfgung, die es mit jedem Pro-jekt aufnehmen kann. Dabei ist der Einstieg wie der Umstieg zu empfehlen. Es gibt praktisch keine Hinderungsgrnde. PHP ist kostenlos unter der GNU-Lizenz verffentlicht, steht als Quellcode zur Verfgung, wird von unglaublich vielen Plattformen untersttzt und hat einen Funktionsumfang, der den Vertretern jeder anderen Skriptsprache die Trnen in die Augen treibt.

    Die vielfltigen Einsatzmglichkeiten und die groe Zielgruppe machen ein derartiges Buch-projekt nicht unbedingt einfach. Profis werden die langen Einfhrungen kritisieren, Einsteiger an den Kapiteln fr Profis verzweifeln. Prinzipiell wendet sich dieses Buch an alle, die Web-server programmieren. Der Umfang und das Verhltnis von Preis und Inhalt sollten jedoch auch diejenigen zufrieden stellen, die nur Teile nutzen knnen oder wollen.

  • Vorwort 7

    Die Highlights auf einen Blick:

    Umfangreiche theoretische Grundlagen, damit Anfnger ein solides Basiswissen erwer-ben knnen.

    Sehr viele Beispiele (fast jede Funktion wird anhand eines Beispiels erklrt), so dass ech-tes learning by doing mglich wird.

    Solide Darstellung anspruchsvoller Funktionen, damit Umsteiger aus anderen Sprachen, die bereits viel Erfahrung haben, ihre komplexen Projekte gezielt realisieren knnen.

    Direkte Tipps und Cross-Referenz-Tabellen fr Umsteiger, speziell fr Perl und VBScript.

    Eine ausfhrliche Einfhrung in die Programmierung von Datenbanken, einschlielich einer detaillierten Erluterung der Abfragesprache SQL am Beispiel der Datenbank MySQL.

    Ich hoffe, dass alle Leser mit diesem Buch ihre Wnsche und Projekte bei der Programmie-rung von Webservern umsetzen knnen. Dies gilt fr die kleinen, privaten Projekte im Webspace genauso wie fr anspruchsvolle Applikationen in der eigenen Serverfarm. Was auch immer Sie umsetzen, scheuen Sie sich nicht, Lob und Kritik anzubringen. Verstehen Sie sich als Teil der rasant wachsenden PHP-Gemeinde und dieses Buch als umfassende Referenz zur Sprache im deutschsprachigen Raum.

    Jrg Krause

    Berlin, im Mrz 1999

  • Schnellbersicht 9

    Schnellbersicht Kapitel

    Inhaltsverzeichnis................................................................................................................. 11

    Teil I Einfhrung und Grundlagen 1 Einfhrung........................................................................................................................ 25 2 Vorbereitung und Installation ..................................................................................... 43 3 Erste Schritte mit PHP .................................................................................................... 87 4 Interaktive Webseiten .................................................................................................. 207 5 Praxis I Lsungen fr den Alltag............................................................................. 301

    Teil II Datenbankprogrammierung 6 Grundlagen der Datenbanktechnik........................................................................... 331 7 Datenbankprogrammierung........................................................................................ 397 8 Praxis II Datenbanklsungen................................................................................... 451

    Teil III PHP professionell programmieren 9 Fortgeschrittene Programmierung ............................................................................. 481 10 Entwicklungsumgebungen.......................................................................................... 615 11 Praxis III Profilsungen ............................................................................................ 653 12 PHP-Erweiterungen ...................................................................................................... 685

    Teil IV Anhnge und Referenz A Glossar ............................................................................................................................. 747 B Referenz .......................................................................................................................... 781 C Cross-Referenz ............................................................................................................. 1113 D Server-Variablen und Statuscodes........................................................................... 1129 E Index .............................................................................................................................. 1139 F An den Autor................................................................................................................ 1161

  • Inhaltsverzeichnis 11

    Inhaltsverzeichnis

    Vorwort zur neuen Auflage fr PHP4................................................................................. 5 Vorwort ..................................................................................................................................... 6 Schnellbersicht Kapitel ....................................................................................................... 9 Inhaltsverzeichnis................................................................................................................. 11

    Teil I Einfhrung und Grundlagen 1 Einfhrung........................................................................................................................ 25 1.1 Was ist PHP?...................................................................................................................................27 1.2 Zielgruppe.......................................................................................................................................28 1.3 Wie dieses Buch zu lesen ist .........................................................................................................29 1.3.1 Aufteilung.................................................................................................................................29 1.3.2 Kapitelbersicht .......................................................................................................................30 1.3.3 Icons und Symbole ..................................................................................................................30 1.3.4 Schreibweisen und Satz ..........................................................................................................32 1.4 Die Buch-CD und Website............................................................................................................33 1.4.1 Allgemeines ..............................................................................................................................33 1.4.2 Quellen im Internet..................................................................................................................33 1.5 Dynamische Webseiten .................................................................................................................35 1.6 Linux oder Windows? ...................................................................................................................36 1.7 Was ist Open Source? ....................................................................................................................41 1.8 Tipps zum sauberen Programmieren..........................................................................................42 2 Vorbereitung und Installation ..................................................................................... 43 2.1 Erforderliche Kenntnisse...............................................................................................................44 2.1.1 Grundbegriffe...........................................................................................................................46 2.2 Vorbereitung...................................................................................................................................59 2.3 Installation unter Windows NT/2000 .........................................................................................59 2.3.1 WAMP.......................................................................................................................................60 2.3.2 WIMP ........................................................................................................................................62 2.3.3 WXMP .......................................................................................................................................64 2.4 Installation unter Linux.................................................................................................................66

  • 12 Inhaltsverzeichnis

    2.4.1 Vorhandenes System nutzen ................................................................................................. 66 2.5 PHP konfigurieren ........................................................................................................................ 67 2.5.1 Die Datei php3.ini/php.ini .................................................................................................... 67 2.5.2 Dynamische Moduleinbindung unter Windows ................................................................ 76 2.6 Sicherheit ........................................................................................................................................ 77 2.6.1 Sicherheitsprobleme ............................................................................................................... 77 2.6.2 Angriffsszenarien.................................................................................................................... 78 2.7 PHP im Webspace ......................................................................................................................... 79 2.7.1 Vorgegebene Daten................................................................................................................. 79 2.7.2 berprfen der Konfiguration .............................................................................................. 80 3 Erste Schritte mit PHP .................................................................................................... 87 3.1 Aufbau der Skripte........................................................................................................................ 89 3.1.1 Wo wird programmiert? ........................................................................................................ 89 3.1.2 PHP und HTML ...................................................................................................................... 89 3.1.3 Dateien einschlieen ............................................................................................................... 91 3.1.4 PHP und JavaScript ................................................................................................................ 93 3.2 Einfhrung in PHP........................................................................................................................ 93 3.2.1 Ausgabe von Daten an den Browser .................................................................................... 93 3.2.2 Kommentare ............................................................................................................................ 95 3.2.3 Variablen .................................................................................................................................. 97 3.2.4 Datentypen............................................................................................................................. 102 3.2.5 Konstanten ............................................................................................................................. 107 3.2.6 Arrays ..................................................................................................................................... 109 3.2.7 Zeichenkettenverarbeitung.................................................................................................. 121 3.2.8 Formatierungen..................................................................................................................... 131 3.2.9 Operatoren ............................................................................................................................. 132 3.2.10 Mathematische Funktionen ................................................................................................. 135 3.2.11 Zeit und Datum..................................................................................................................... 138 3.2.12 Regulre Ausdrcke ............................................................................................................. 144 3.2.13 Webspezifische Funktionen................................................................................................. 153 3.3 Programmieren mit PHP............................................................................................................ 154 3.3.1 Blcke und Strukturen.......................................................................................................... 155

  • Inhaltsverzeichnis 13

    3.3.2 Bedingungen ..........................................................................................................................155 3.3.3 Schleifen ..................................................................................................................................162 3.3.4 Funktionen und Prozeduren ................................................................................................168 3.3.5 Objektorientierte Programmierung.....................................................................................176 3.3.6 Erweiterte OOP-Syntax in PHP4 .........................................................................................182 3.3.7 COM-Objekte .........................................................................................................................184 3.4 Fehlerbehandlung ........................................................................................................................186 3.4.1 Abbruchsteuerung.................................................................................................................186 3.4.2 Fehlerkonzept in PHP ...........................................................................................................187 3.4.3 Umgang mit Laufzeitfehlern ................................................................................................188 3.4.4 Fehler vermeiden ...................................................................................................................189 3.4.5 Hilfe bei der Fehlersuche ......................................................................................................195 3.4.6 Debugging-Tipps ...................................................................................................................196 3.5 Hilfsfunktionen ............................................................................................................................204 4 Interaktive Webseiten .................................................................................................. 207 4.1 Formulare auswerten...................................................................................................................209 4.1.1 GET und POST.......................................................................................................................209 4.1.2 Daten aus einem Formular ermitteln ..................................................................................210 4.1.3 Formularelemente auf Existenz testen................................................................................214 4.1.4 Formulare und JavaScript.....................................................................................................215 4.1.5 Komplexe Formulare.............................................................................................................221 4.2 Daten per URL weiterreichen.....................................................................................................226 4.2.1 Wie werden Daten weitergereicht? .....................................................................................226 4.2.2 Probleme .................................................................................................................................228 4.3 Cookies ..........................................................................................................................................231 4.3.1 Einfhrung in Cookies ..........................................................................................................231 4.3.2 Cookies in PHP ......................................................................................................................236 4.3.3 Cookies und JavaScript .........................................................................................................240 4.4 Verbindungssteuerung................................................................................................................242 4.4.1 Funktionsbersicht ................................................................................................................242 4.4.2 Einfhrung..............................................................................................................................243 4.4.3 Ausfhrungssteuerung .........................................................................................................245

  • 14 Inhaltsverzeichnis

    4.5 Sessionverwaltung ...................................................................................................................... 245 4.5.1 Einfhrung in die Sessionverwaltung................................................................................ 245 4.5.2 Sessions mit versteckten Feldern ........................................................................................ 247 4.5.3 Sessions mit URI.................................................................................................................... 248 4.5.4 Sessions mit Cookies............................................................................................................. 249 4.5.5 Textdateien und Datenbanken ............................................................................................ 250 4.5.6 Sicherung der Client-Techniken.......................................................................................... 251 4.5.7 PHP-Sessionfunktionen........................................................................................................ 253 4.6 Mit Servervariablen arbeiten ..................................................................................................... 257 4.6.1 CGI-Umgebung ..................................................................................................................... 257 4.7 Zugriff auf das Dateisystem....................................................................................................... 258 4.7.1 Einfhrung............................................................................................................................. 258 4.7.2 Dateien lesen und schreiben................................................................................................ 261 4.7.3 Mit Dateien arbeiten ............................................................................................................. 269 4.7.4 Verzeichnisse ......................................................................................................................... 271 4.7.5 Verbindungen zu Servern im Internet................................................................................ 275 4.7.6 Dateiupload ........................................................................................................................... 280 4.8 Sicherheit ...................................................................................................................................... 283 4.8.1 Warum absichern? ................................................................................................................ 283 4.8.2 Grundlagen der Authentifizierung..................................................................................... 284 4.8.3 Seiten mit PHP schtzen ...................................................................................................... 288 4.8.4 Methoden der Webserver..................................................................................................... 291 4.9 Bilderzeugung.............................................................................................................................. 293 4.9.1 Einfhrung............................................................................................................................. 293 4.9.2 Anwendungsbeispiel ............................................................................................................ 297 5 Praxis I Lsungen fr den Alltag............................................................................. 301 5.1 Lsung I: Funktionserweiterungen........................................................................................... 303 5.1.1 Einfhrung............................................................................................................................. 303 5.1.2 Zeichenkettenfunktionen ..................................................................................................... 303 5.1.3 Mathematische Funktionen ................................................................................................. 305 5.1.4 Ersetzen in Dateien ............................................................................................................... 310 5.1.5 Umgang mit Verzeichnissen................................................................................................ 311

  • Inhaltsverzeichnis 15

    5.2 Lsung II: Dateiupload................................................................................................................312 5.2.1 Beschreibung ..........................................................................................................................312 5.2.2 Code.........................................................................................................................................312 5.3 Lsung III: Counter......................................................................................................................314 5.3.1 Textbasierter Counter............................................................................................................314 5.3.2 Bildbasierter Counter ............................................................................................................316 5.4 Lsung IV: E-Mail-Abruf ............................................................................................................319 5.4.1 Problemstellung .....................................................................................................................319 5.4.2 Funktionsbersicht ................................................................................................................319 5.4.3 Code und Erluterungen ......................................................................................................319 5.5 Lsung V: Minigstebuch ...........................................................................................................323 5.5.1 Beschreibung ..........................................................................................................................323 5.5.2 Code mit Erluterungen .......................................................................................................324 5.6 Lsung VI: CD-Cover-Verwaltung............................................................................................325 5.6.1 Erste Ausbaustufe..................................................................................................................325 5.6.2 Cover-Album mit Upload-Funktionen ...............................................................................326 5.6.3 CD-Cover-Verwaltung mit Authentifizierung ..................................................................327

    Teil II Datenbankprogrammierung 6 Grundlagen der Datenbanktechnik........................................................................... 331 6.1 Installation von MySQL ..............................................................................................................333 6.1.1 Installation unter Windows..................................................................................................333 6.1.2 MySQL-Monitor.....................................................................................................................334 6.2 MySQL versus Standard-SQL ....................................................................................................335 6.2.1 Erweiterungen gegenber ANSI SQL92 .............................................................................336 6.2.2 Fehlende Funktionen.............................................................................................................337 6.2.3 Hinweise fr die Portierbarkeit ...........................................................................................338 6.2.4 Technische Daten...................................................................................................................338 6.3 Einfhrung in SQL.......................................................................................................................339 6.3.1 Grundstzliche Konzepte .....................................................................................................339 6.3.2 Theorie der SQL-Sprache......................................................................................................348 6.3.3 Literale.....................................................................................................................................348 6.3.4 Datentypen .............................................................................................................................351

  • 16 Inhaltsverzeichnis

    6.3.5 Datenbanken und Tabellen erzeugen................................................................................. 355 6.3.6 Mit Datenbanken arbeiten ................................................................................................... 358 6.3.7 Umgang mit SELECT: Spaltenweise arbeiten ................................................................... 361 6.3.8 Regulre Ausdrcke ............................................................................................................. 363 6.3.9 Operatoren und Funktionen................................................................................................ 364 6.3.10 Erweiterte SQL-Programmierung....................................................................................... 377 6.4 MySQL-Sicherheit ....................................................................................................................... 382 6.4.1 Einfhrung............................................................................................................................. 382 6.4.2 Die Usertabellen in MySQL ................................................................................................. 385 6.5 ODBC ............................................................................................................................................ 386 6.5.1 Einfhrung in ODBC ............................................................................................................ 386 6.5.2 ODBC unter Windows einrichten....................................................................................... 388 6.5.3 Datenbankzugriff mit Access .............................................................................................. 391 6.5.4 MySQL und ODBC ............................................................................................................... 394 6.6 ODBC-Funktionen....................................................................................................................... 394 7 Datenbankprogrammierung........................................................................................ 397 7.1 MySQL-Funktionen .................................................................................................................... 399 7.1.1 Funktionsbersicht ............................................................................................................... 399 7.1.2 Erste Schritte mit MySQL und PHP ................................................................................... 400 7.1.3 Wichtige Funktionen ............................................................................................................ 402 7.2 Persistente Verbindungen .......................................................................................................... 410 7.2.1 Einfhrung............................................................................................................................. 410 7.3 Umgang mit Datenbanken ......................................................................................................... 413 7.3.1 Datenbankcursor ................................................................................................................... 413 7.3.2 Eigenschaften der Ergebnisliste .......................................................................................... 413 7.3.3 Die Ergebnisliste auslesen.................................................................................................... 414 7.3.4 Informationen ber die Datenbank .................................................................................... 415 7.4 Ein Datenbankprojekt entsteht .................................................................................................. 419 7.4.1 Vorbereitung.......................................................................................................................... 420 7.4.2 Die Stammfunktionen........................................................................................................... 424 7.4.3 Realisierung ........................................................................................................................... 432 7.5 PHP und Access 2000.................................................................................................................. 437

  • Inhaltsverzeichnis 17

    7.5.1 Grundlagen.............................................................................................................................437 7.5.2 Beispielapplikation ................................................................................................................438 7.6 MySQL ber Access bedienen....................................................................................................446 7.6.1 Einrichtung .............................................................................................................................447 7.6.2 Nutzung ..................................................................................................................................448 8 Praxis II Datenbanklsungen................................................................................... 451 8.1 Kleine Dienstprogramme............................................................................................................453 8.1.1 bersicht .................................................................................................................................453 8.1.2 Tabellen anzeigen ..................................................................................................................453 8.1.3 Datumsbehandlung...............................................................................................................455 8.1.4 SELECT-Liste aus MySQL ....................................................................................................457 8.1.5 Kreditkartencheck..................................................................................................................458 8.1.6 Generierung einer WHERE-Bedingung..............................................................................460 8.2 Gstebuch......................................................................................................................................462 8.2.1 Datenbankstruktur ................................................................................................................462 8.2.2 Beschreibung ..........................................................................................................................464 8.3 Authentifizierung mit Datenbank..............................................................................................465 8.4 Umfrage.........................................................................................................................................466 8.4.1 Einfhrung..............................................................................................................................467 8.4.2 Code und Datenbank ............................................................................................................467

    Teil III PHP professionell programmieren 9 Fortgeschrittene Programmierung ............................................................................. 481 9.1 Netzwerkprogrammierung.........................................................................................................483 9.1.1 Theorie.....................................................................................................................................483 9.1.2 Netzwerkfunktionen .............................................................................................................506 9.2 E-Mail-Programmierung.............................................................................................................511 9.2.1 Theorie der E-Mail-Programmierung .................................................................................511 9.2.2 E-Mail-Protokolle...................................................................................................................524 9.2.3 Praktische E-Mail-Programmierung ...................................................................................527 9.2.4 E-Mail unter Windows NT/2000.........................................................................................534 9.2.5 E-Mail aus Skript versenden ................................................................................................536

  • 18 Inhaltsverzeichnis

    9.2.6 NNTP fr Newsserver programmieren .......................................................................... 537 9.3 Portable Document Format PDF ............................................................................................ 539 9.3.1 Grundlagen PDF ................................................................................................................... 539 9.3.2 Einfhrung in die pdflib ...................................................................................................... 540 9.4 LDAP ............................................................................................................................................ 543 9.4.1 Einfhrung in LDAP............................................................................................................. 543 9.4.2 Eine einfache LDAP-Abfrage mit PHP .............................................................................. 546 9.5 Ausgabesteuerung....................................................................................................................... 548 9.5.1 Grundlagen der Pufferung................................................................................................... 548 9.5.2 Umgang mit den Pufferfunktionen .................................................................................... 549 9.6 Regulre Ausdrcke ................................................................................................................... 550 9.6.1 Einfhrung............................................................................................................................. 550 9.6.2 Unterschiede zu Perl............................................................................................................. 551 9.6.3 bersicht ................................................................................................................................ 552 9.6.4 Regulre Ausdrcke ............................................................................................................. 553 9.6.5 Ersetzungen ........................................................................................................................... 568 9.6.6 Die PCRE-Funktionen im Detail ......................................................................................... 568 9.7 XML............................................................................................................................................... 571 9.7.1 Was ist XML?......................................................................................................................... 572 9.7.2 Installation des XML-Parsers............................................................................................... 574 9.7.3 XML-Funktionen................................................................................................................... 575 9.7.4 Spezielle Eigenschaften der XML-Funktionen .................................................................. 576 9.7.5 Funktionsbersicht ............................................................................................................... 577 9.7.6 XML-Anwendungen in der Praxis...................................................................................... 578 9.7.7 Das XML-Projekt ................................................................................................................... 585 9.8 WML ............................................................................................................................................. 597 9.8.1 Grundlagen WML................................................................................................................. 597 9.8.2 Praktische Beispiele .............................................................................................................. 598 9.8.3 Mit WML professionell arbeiten ......................................................................................... 604 9.9 WDDX........................................................................................................................................... 605 9.9.1 WDDX im Detail ................................................................................................................... 605 9.9.2 WDDX-Elemente................................................................................................................... 609

  • Inhaltsverzeichnis 19

    9.9.3 WDDX-Funktionen in PHP ..................................................................................................613 10 Entwicklungsumgebungen.......................................................................................... 615 10.1 Editoren fr Windows.................................................................................................................617 10.1.1 Weitere Editoren ....................................................................................................................625 10.2 Editoren fr Unix .........................................................................................................................625 10.2.1 bersicht .................................................................................................................................625 10.3 Concurrent Version System (CVS).............................................................................................626 10.3.1 Einfhrung..............................................................................................................................626 10.3.2 Einrichtung der Software......................................................................................................627 10.3.3 Eine neue Website von Grund auf einrichten ....................................................................629 10.3.4 Mit einer existierenden Website arbeiten ...........................................................................630 10.3.5 Eine verwaltete Website bearbeiten ....................................................................................631 10.3.6 nderungen im Repository physisch ausfhren...............................................................633 10.3.7 Konflikte lsen .......................................................................................................................634 10.3.8 Verfolgen und Protokollieren von nderungen................................................................637 10.3.9 Die Site mit CVS verffentlichen .........................................................................................638 10.3.10 CVS-Administration..............................................................................................................639 10.3.11 Automatische Benachrichtigung..........................................................................................641 10.3.12 Wo Sie CVS bekommen ........................................................................................................642 10.3.13 CVS-Kurzreferenz..................................................................................................................642 10.4 phpMyAdmin...............................................................................................................................643 10.4.1 Einfhrung..............................................................................................................................643 10.4.2 Funktionsbersicht ................................................................................................................646 11 Praxis III Profilsungen ............................................................................................ 653 11.1 E-Mail-Anwendung.....................................................................................................................655 11.1.1 bersicht .................................................................................................................................655 11.1.2 Verwalten eines POP3-Servers.............................................................................................655 11.1.3 MIME-Nachrichten senden und empfangen......................................................................664 11.2 Universelles Shopsystem ............................................................................................................671 11.2.1 Leistungsmerkmale ...............................................................................................................672 11.2.2 Vorstellung der Kernfunktionen..........................................................................................672 11.2.3 Datenbankstruktur ................................................................................................................678

  • 20 Inhaltsverzeichnis

    11.2.4 Programmstruktur ................................................................................................................ 681 11.2.5 Ausblick.................................................................................................................................. 683 12 PHP-Erweiterungen....................................................................................................... 685 12.1 bersicht PHP-Erweiterungen .................................................................................................. 687 12.2 PHPLIB Version 7........................................................................................................................ 687 12.2.1 Quellen und Rechte .............................................................................................................. 687 12.2.2 Installation ............................................................................................................................. 687 12.2.3 Kurzbeschreibung................................................................................................................. 689 12.2.4 Beschreibung der Funktionen.............................................................................................. 691 12.2.5 Kernfunktionen ..................................................................................................................... 691 12.3 Beschreibung der Funktionen.................................................................................................... 693 12.3.1 DB_Sql .................................................................................................................................... 693 12.3.2 Seitensteuerung (page) ......................................................................................................... 696 12.3.3 CT_Sql..................................................................................................................................... 697 12.3.4 CT_Shm .................................................................................................................................. 697 12.3.5 CT_Ldap................................................................................................................................. 698 12.3.6 CT_Dbm ................................................................................................................................. 699 12.3.7 Session .................................................................................................................................... 699 12.3.8 Die Klasse Auth..................................................................................................................... 704 12.3.9 Perm: Verwaltung der Zugriffsrechte ................................................................................ 711 12.3.10 Klasse User............................................................................................................................. 713 12.3.11 Erweiterte Funktionalitt ..................................................................................................... 714 12.3.12 HTML Widgets Classes........................................................................................................ 717 12.3.13 Sql_Query............................................................................................................................... 720 12.3.14 Die Klassen Table und CSV_Table...................................................................................... 722 12.3.15 Die Klasse Form .................................................................................................................... 724 12.3.16 Die Klasse Tree ...................................................................................................................... 727 12.3.17 Funktionssammlung STRINGS2 ......................................................................................... 730 12.4 FastTemplate................................................................................................................................ 731 12.4.1 Beschreibung.......................................................................................................................... 731 12.4.2 FastTemplate intern .............................................................................................................. 734

  • Inhaltsverzeichnis 21

    Teil IV Anhnge und Referenz A Glossar ............................................................................................................................. 747 B Referenz .......................................................................................................................... 781 B.1 Copyright und Lizenzhinweise............................................................................. 781 B.2 Inhaltsverzeichnis der Referenz ........................................................................... 788 B.3 Aufbau und Schreibstil .......................................................................................... 825 B.4 Alphabetische bersicht ........................................................................................ 825 B.5 Befehlsreferenz ........................................................................................................ 851 B.6 Funktionsreferenz.................................................................................................... 862 B.7 Datenbankfunktionen .......................................................................................... 1032 B.8 Systemnahe Funktionen....................................................................................... 1097 C Cross-Referenz ............................................................................................................. 1113 C.1 Cross-Referenz VBScript...................................................................................... 1113 C.2 Cross-Referenz Perl ............................................................................................... 1123 D Server-Variablen und Statuscodes........................................................................... 1129 D.1 Server-Variablen .................................................................................................... 1129 D.2 HTTP-Statuscodes ................................................................................................. 1131 D.3 Die Codes im Detail .............................................................................................. 1133 E Index .............................................................................................................................. 1139 E.1 Erluterungen zum Index..................................................................................... 1139 E.2 Globaler Index........................................................................................................ 1141 F An den Autor................................................................................................................ 1161

  • Was ist PHP? 23

    Teil I Einfhrung und Grundlagen

    Einfhrung und Grundlagen

  • 24 1 Einfhrung

  • Was ist PHP? 25

    1 Einfhrung

    Dieses Kapitel enthlt einen kurzen geschichtli-chen Abriss zu PHP, eine Definition der Ziel-gruppe und Hinweise zum Umgang mit dem Buch und der CD zum Buch.

    Ein Ausblick auf die wichtigsten Betriebssysteme Linux und Windows schliet sich an. Anfnger finden Tipps zum sauberen Programmieren.

    Was ist PHP? (Seite 27) Zielgruppe (Seite 28) Wie dieses Buch zu lesen ist (Seite 29) Die Buch-CD und Website (Seite 33) Dynamische Webseiten (Seite 35) Linux oder Windows (Seite 36) Was ist Open Source? (Seite 41) Tipps zum sauberen Programmieren (Seite 42)

  • 1.1 Was ist PHP? 27

    11.1 Was ist PHP? PHP ist eine Skriptsprache zur Erstellung dynamischer Websites, nicht mehr, aber auch nicht weniger. Die erste Version entwickelte 1994 Rasmus Lerdorf, der eigentlich nur eine Mglichkeit zur Programmierung seines eigenen Webservers suchte. Er nannte seine kleine Skriptmaschine Per-sonal Home Page Tools. Die Applikation stellte er ins Netz und lie die freie Verbreitung zu. So entstand PHP, als Abkrzung zu Personal Home Page. Spter entwickelten die Open Source-Jnger, bekannt fr krypti-sche Akronyme, die rekursive Version PHP HyperText Preprocessor. Einen offiziellen Namen gibt es darber hinaus nicht.

    Den Weg zum professionellen Programm ging PHP erst 1995. Unter dem Namen PHP/FI (Personal Homepage Tools/Form Interface) wurde die erste wirklich nutzbare Version verffentlicht. PHP/FI wird als Version 2 angesehen. PHP entwickelte sich seit dieser Zeit rasant weiter. Zum einen trug dazu die freie Verfgbarkeit bei. Die ist bei ASP und bei Perl aber auch gegeben. PHP ist im Gegensatz dazu eine Sprache, deren einziger Zweck das Web ist. ASP kommt mit VBScript daher, einem BASIC-Derivat, das nur schwer an die Bedrfnisse eines Webservers angepasst werden kann. Moderne Sprachelemente wie die objektorientierte Pro-grammierung sind nur unvollkommen umgesetzt. Der grte Nachteil ist aber die Einschrnkung auf Microsoft-Plattformen. Perl wurde schon 1986 von Larry Wall entworfen, zu dieser Zeit war das Web noch unbekannt. Die starken Zeichenkettenfunktionen und die freie Verbreitung als Open Source machten Perl den Weg ins Web frei. Leider ist die Lesbarkeit nicht einfach und die Programmierung vor allem fr Anfnger sehr kompli-ziert.

    Aus der Beobachtung der Nachteile entstand eine Skriptsprache, die alle Vorteile der Konkurrenten in sich vereint PHP. Zum einen wird die von ASP bekannte einfache Kombination mit HTML genutzt, zum anderen die leistungsstarke und verbreitete C-Syntax, die vielen schon von JavaScript oder Java bekannt ist. Objektorientiertes Programmieren ist mglich, e-benso wie eine gute Modularisierung.

    PHP besticht auerdem durch einen fast schon grandiosen Funktionsum-fang. Hier kann keine andere Sprache mithalten. Wo immer ein Program-mierer ein Problem zu lsen hatte, wurde der Funktionsumfang erweitert. Besonders deutlich wird dies bei den Datenbankfunktionen. PHP unter-sttzt mehr Datenbanken direkt, als die meisten Programmierer ber-haupt vom Namen her kennen. Den Erfolg macht nicht zuletzt auch die gute Untersttzung fr die Datenbank MySQL aus, die wie PHP auch als Open Source verfgbar ist.

    Seit Mitte 1997 wird PHP von einem Team an Programmierern rund um Rasmus Lerdorf weiterentwickelt. Mit der Version 3 stand bereits Anfang 1999 ein System zur Verfgung, das keine Konkurrenz seitens Perl oder ASP mehr frchten muss.

    PHP ist eine Skriptsprache

    1995: PHP/FI

    Vorteile

    1997: PHP3

  • 28 1 Einfhrung

    Der nchste Schritt, PHP4, wurde im Jahr 2000 vollendet. Dieses Buch geht vollstndig auf PHP4 ein. Im Zusammenhang mit PHP4 ist oft auch von ZEND die Rede. ZEND ist ein Kunstwort aus ZEev und aNDi, den Vornamen der Entwickler Zeev Suraski und Andi Gutman. ZEND ist aber keine Konkurrenz zu PHP, sondern der Kernel der neuen Version PHP4. ZEND ist deutlich schneller und leistungsfhiger als PHP3 und besticht durch weitere Eigenschaften wie einen internen Compiler, der den Vorsprung vor anderen Skriptsprachen noch grer werden lsst. Zustzlich gibt es einen Optimizer, der die Leistung der Skripte noch-mals verbessert.

    In diesem Buch ist von PHP3 und PHP4 die Rede, Unterschiede werden klar herausgestellt. Erfolgt keine Unterscheidung, sind beide Versionen in diesem Punkt kompatibel. Grundstzlich bildet PHP4 aber den Schwer-punkt, die beiliegenden Skripte wurden nicht alle mit PHP3 getestet.

    1.2 Zielgruppe Sie programmieren HTML-Seiten? Sie mchten Ihren Webserver selbst programmieren? Sie mchten Ihre Seiten mit Datenbanken aufwerten? Dann sind Sie die Zielgruppe.

    PHP ist eine umfangreiche, leistungsstarke Skriptsprache zur Program-mierung dynamischer, datenbankgesttzter Websites. Das klingt kompli-zierter, als es ist. Mit Hilfe dieses Buches sollten auch Webdesigner, die bisher keine Erfahrung mit der Programmierung hatten, in die Welt der Webserverprogrammierung eintauchen knnen. Ich habe das Buch so aufgebaut, dass in den ersten Abschnitten keine Kenntnisse abgesehen von HTML vorausgesetzt werden. Profis, die andere Programmierspra-chen kennen, sei die Cross-Referenz im Anhang ans Herz gelegt. Dort finden Sie eine Gegenberstellung gngiger Befehle aus Perl, JavaScript und VBScript mit den Entsprechungen in PHP. Mit dieser Hilfe knnen Sie Skripte leicht bertragen.

    Betriebssystemkenntnisse sind ebenfalls vorauszusetzen, die Plattform ist bei PHP fast freigestellt. Da der PHP-Prozessor als C-Quelltext vorliegt, kann er leicht auf alle Plattformen bersetzt werden. Entsprechend gro ist die Auswahl an Binrdistributionen. Wenn Sie mit Windows vertraut sind, sollten Sie PHP unbedingt auch unter Windows entwickeln. Haben Sie mehr fr Linux brig, nutzen Sie dies auch als Entwicklungsplattform. Das gilt gleichermaen fr alle anderen Systeme. Dieses Buch entstand in weiten Teilen auf einem Windows-System (Windows 2000), was aber mehr an der Verfgbarkeit eines geeigneten Satzprogramms lag. Die Hauptplattform drfte Linux sein, an entsprechenden Stellen wird auf Besonderheiten eingegangen.

    Wer PHP bereits gut kennt und Informationen fr Hardcore-Programmierer erwartet, wird etwas enttuscht sein. Zum einen bietet das Buch trotz beachtlichen Umfangs nicht unbegrenzt Platz. Zum anderen sind es nur sehr wenige Personen, die Bedarf an einem sehr tiefen Einstieg

    2000: PHP4/ZEND

    Fr wen ist dieses Buch?

    Betriebssystem-kenntnisse

    Was es nicht gibt

  • 1.3 Wie dieses Buch zu lesen ist 29

    1in PHP haben. Die bentigten Informationen sind dann aber nur noch schwer zu vermitteln und kaum auf engem Raum darstellbar. Die Funkti-onserweiterung durch Eingriffe in den Quelltext wird daher nur am Ran-de angesprochen. Bedenken Sie auch, dass sich PHP rasant weiterentwi-ckelt und nderungen am PHP3-Code sinnlos werden, wenn PHP4 ver-wendet wird. Der Aufwand zur langfristigen Pflege solcher Lsungen ist enorm. Versuchen Sie daher, komplexe Probleme zuerst mit PHP-eigenen Mitteln zu lsen. Insofern sind viele Beispiele auf PHP4 abgestimmt.

    Noch eine andere Zielgruppe wird sich zwangslufig mit PHP beschfti-gen mssen die Internet Service Provider (ISP). Immer mehr Kunden, die Webspace mieten, werden eine Untersttzung fr Skripte erwarten. Die Verbreitung von PHP fhrt dazu, dass die Forderungen direkt an die ISPs herangetragen werden. Da PHP sehr umfangreiche Zugriffe auf den Server erlaubt, sollten Sie mit den Mglichkeiten vertraut sein. Sie knn-ten sonst Scheunentore groe Sicherheitslcher auftun.

    1.3 Wie dieses Buch zu lesen ist Sicher bleibt es jedem Leser berlassen, wie er das Buch liest. Fr die ersten Schritte ist es aber effektiver, die Struktur ungefhr zu kennen.

    1.3.1 Aufteilung Das Buch ist in vier Teile gegliedert, die sich jeweils einer bestimmten Zielgruppe widmen:

    Teil 1: Einfhrung und Grundlagen Dieser Teil ist fr alle Anfnger und Einsteiger interessant. Es werden einige theoretische Grundlagen vermittelt, die spter noch vertieft werden. Auerdem wird auf die Installation eingegangen. Die Erkl-rung der Basisfunktionen und -befehle finden Sie auch in diesem Teil.

    Teil 2: Datenbankprogrammierung Hier geht es vor allem um Datenbanken, speziell MySQL. Sie erfahren alles ber SQL, ODBC und theoretische Grundlagen zu Datenbanken. Die praktische Arbeit mit PHP und MySQL steht im Vordergrund dieses Teils.

    Teil 3: PHP professionell programmieren Dieser Teil wendet sich an Leser, die bereits erste Erfahrungen mit PHP gesammelt haben und nun mehr aus ihrem System herausholen wollen. Vertiefend wird auf Protokolle eingegangen und umfangrei-ches Hintergrundwissen vermittelt. Jede Funktion wird auch in die-sem Teil mit Beispielen erklrt.

    Fr ISPs

  • 30 1 Einfhrung

    Teil 4: Anhnge Mit diesem Teil arbeiten Sie, wenn Sie PHP beherrschen und eine schnelle bersicht zum Nachschlagen bentigen. Sie finden eine komplette Referenz und eine Cross-Referenz fr Umsteiger.

    1.3.2 Kapitelbersicht Die folgende bersicht zeigt alle Kapitel auf einen Blick, damit Sie sich schnell grob orientieren knnen.

    1 Einfhrung ...................................................................................... 25

    2 Vorbereitung und Installation..................................................... 43

    3 Erste Schritte mit PHP................................................................... 87

    4 Interaktive Webseiten ................................................................. 207

    5 Praxis I Lsungen fr den Alltag ........................................... 301

    6 Grundlagen der Datenbanktechnik ......................................... 331

    7 Datenbankprogrammierung ...................................................... 397

    8 Praxis II Datenbanklsungen ................................................. 451

    9 Fortgeschrittene Programmierung ............................................ 481

    10 Entwicklungsumgebungen ........................................................ 615

    11 Praxis III Profilsungen........................................................... 653

    12 PHP-Erweiterungen ..................................................................... 685

    Am Anfang eines jeden Kapitels finden Sie eine bersicht ber die Ab-schnitte und deren Inhalt, jeweils mit eigenen Verweisen auf die entspre-chenden Seiten. Diese zustzliche Navigationsebene umgeht bewusst das umfangreiche Inhaltsverzeichnis und soll vor allem am Anfang die Orien-tierung erleichtern.

    1.3.3 Icons und Symbole Im Buch werden an vielen Stellen in der Marginalspalte Symbole verwen-det. Sie dienen der schnellen Orientierung beim Durchblttern. Da viele Informationen an mehreren Stellen zu finden sind, dienen bestimmte Symbole der besseren Erkennbarkeit der Relevanz einer Textstelle. Auf diese Weise kann der Index etwas entlastet werden, der bewusst nur auf die Schwerpunktinformationen hinweist.

    Dieses Symbol bezeichnet Probleme, Bugs, ernste Hinweise auf Gefahren oder auch besonders wichtige Informationen. Warnungen stehen auer-dem immer in einem grauen Kasten.

    Kapitelbersicht

    bersichten am Kapitelanfang

  • 1.3 Wie dieses Buch zu lesen ist 31

    1Tipps sind besonders gekennzeichnet, um die Aufmerksamkeit auf eine bestimmte Stelle im Text zu lenken. Dieses Symbol finden Sie vor allem bei langen Texten zur Strukturierung.

    Hinweise kennzeichnen interessante Ergnzungen zum Text, die den unmittelbaren Kontext etwas verlassen. Ein grauer Kasten hebt die Bedeu-tung zustzlich hervor.

    Das CD-Symbol finden Sie bei Programmen, die auf der beiliegenden CD zu finden sind. Alle Programme auf CD stehen auch auf der Website, die Sie unbedingt besuchen sollten, um die aktuellsten Versionen verwenden zu knnen.

    Manche Skript-Schnipsel sind nicht auf der CD, sondern dienen nur der Erluterung der Anwendung. Oder es gibt im Internet eine Quelle, unter der Sie die aktuellste Version beziehen knnen. Diese Skripte sind mit dem Beispiel-Symbol gekennzeichnet.

    Dieses Symbol weist Sie auf bungen hin. Sie knnen Ihre Fhigkeiten, PHP zu programmieren, an diesen Stellen besonders ausbauen. Zum Verstndnis des Buches sind diese Lehrabschnitte aber nicht notwendig.

    An vielen Stellen im Buch finden Sie theoretische Basisinformationen, die zum unmittelbaren Verstndnis nicht notwendig sind. Diese Grundlagen sind vor allem fr Leser gedacht, die gleichzeitig Hintergrundwissen erwerben mchten, beispielsweise fr die berufliche Fortbildung.

    Insider-Informationen haben eher einen praktischen Bezug, gehen jedoch ebenso ber das zur reinen Programmierung ntige Niveau hinaus. Auch geheimnisumwitterte Hintergrundinformationen werden so gekenn-zeichnet.

    PHP ist eine Skriptsprache fr die plattformunabhngige Programmie-rung. Trotz aller Bemhungen der Entwickler gibt es einige Unterschiede zwischen Windows und Unix. Abschnitte, die speziell zu Windows In-formationen bieten, sind mit dem Windows-Icon gekennzeichnet. Ohne besondere Kennzeichnung beziehen sich die Angaben immer auf alle Plattformen.

    Immer noch laufen weltweit PHP-Server unter PHP3. Die neue Version PHP4 realisiert ab Mitte 2000 durch die leistungsstarke Zend-Engine eine neue Dimension der Skriptsprache. Dieses Buch geht im Wesentlichen auf PHP4 ein. In weiten Teilen ist PHP4 kompatibel zu PHP3. Wenn Abschnit-te ausschlielich fr PHP4 gelten, wird dies mit dem PHP4-Logo gekenn-zeichnet.

    An einigen Stellen sind die Erweiterungen in PHP4 zu Lasten von PHP3-Funktionen erfolgt. Diese Abschnitte sind mit dem PHP3-Logo gekenn-zeichnet, das Sie dank der Arbeit der Entwickler aber nur selten finden. Wenn Ihnen ausschlielich ein PHP4-Server zur Verfgung steht, sollten Sie hier besondere Vorsicht walten lassen.

  • 32 1 Einfhrung

    1.3.4 Schreibweisen und Satz Im Buch werden konsequent bestimmte Schreibweisen genutzt. Davon sollen vor allem Anfnger profitieren, die nicht auf Anhieb unterscheiden knnen, ob es sich bei einem Namen um ein selbstgewhltes Sprachkon-strukt oder einen reservierten Bezeichner handelt.

    Befehle, Namen, Konstanten, Bezeichner usw., die in PHP fest definiert sind, werden mit einer nichtproportionalen Schrift gesetzt und sehen dann folgendermaen aus: echo, function, class.

    Wenn dagegen Namen frei definiert wurden, beispielsweise die Namen von nutzerdefinierten Funktionen oder Variablen, werden diese im Flie-text kursiv gesetzt: myfunction, var3.

    Kursiv sind auch alle Links (URLs) gesetzt, die Sie im Internet aufsuchen knnen und die zu einem Thema weitergehende Informationen bieten, beispielsweise http://www.php.net.

    Quellcode, den Sie eintippen oder von der CD laden und ausfhren kn-nen, wird in einer nichtproportionalen Schrift gesetzt:

    Testprogramm Testprogramm

    Oft werden lngere Quelltexte abgedruckt, um das Programm im ber-blick zu zeigen. Die wichtigsten oder kompliziertesten Passagen werden anschlieend noch einmal erlutert. Solche Fragmente knnen Sie oft nicht einzeln eingeben und ausfhren, sie sind deshalb grau hinterlegt:

    Testprogramm

    Oft werden auch Eingaben an der Konsole notwendig. Dann werden diese wie Quellcode in einer nichtproportionalen Schrift fett gesetzt. Ausgaben erscheinen dagegen normal:

    $ mount c:/temp /tmp Successfully mounted device tmp

    Dialogfelder, Menbefehle oder andere vorgegebene Elemente werden in Kapitlchen gesetzt. Aufeinanderfolgende Menbefehle werden durch einen senkrechten Strich getrennt: DATEI | FFNEN.

    Wenn es sich um fest vergebene Dateinamen handelt, beispielsweise vom System vorgegebene, werden diese ebenfalls in Kapitlchen gesetzt: PHP.INI.

    Reservierte Wrter

    Eigene Namen

    URLs

    Quellcode

    Eingaben

    Dialoge und Mens

    Dateinamen

  • 1.4 Die Buch-CD und Website 33

    11.4 Die Buch-CD und Website Zu diesem Buch gibt es eine CD und eine Website, auf der aktuellere Ver-sionen der Skripte und der Software zu finden sind.

    1.4.1 Allgemeines Beachten Sie, dass diese Skripte teilweise von der abgedruckten Version abweichen. Gedruckte Skripte sind oft gekrzt, von Kommentaren befreit und fr den Satz anders umbrochen. Verwenden Sie im Zweifelsfall im-mer die Version von CD. Alle Skripte sind auch im Internet zu finden, wo Sie auch aktuellere Versionen und Bugfixes finden. Die Buch-CD hat eine eigene Bedienoberflche, die den Zugriff auf alle Bestandteile beinhaltet. Wenn Sie PHP-Skripte aus der CD heraus ausfhren mchten, mssen Sie den Inhalt zuvor auf Ihre lokale Festplatte oder einen Webserver kopieren und den Server so einrichten, dass er mit PHP umgehen kann. Lesen Sie dazu Kapitel 2. Wenn Sie keinen Webserver haben und nur zur Informati-on mit PHP spielen wollen, nutzen Sie die Website zum Buch:

    http://www.php.comzept.de

    CD und Website sind weitestgehend identisch, die Website wird aller-dings gelegentlich aktualisiert. Mehr Informationen zu PHP4 erfahren Sie auf der Partnersite zum Buch unter:

    http://www.phparchiv.de

    1.4.2 Quellen im Internet Im Internet finden Sie immer aktuellere Informationen als in einem Buch, das nur gelegentlich neu aufgelegt werden kann.

    Dokumentationen PHP ist eine sehr lebendige und zgig entwickelte Sprache. Dieses Buch bercksichtigt zwar die neueste Version PHP4 auf Basis der Zend-Engine, bei Drucklegung standen aber nicht alle Originaldokumentationen zur Verfgung. Der Autor war deshalb an einigen Stellen auf eigene Recher-chen und Experimente angewiesen. Darber hinaus stand nur die Beta-Version von PHP4 zur Verfgung. Sie sollten sich daher auf den folgen-den Servern regelmig ber den Fortgang der Arbeiten informieren:

    http://www.php.net

    http://www.zend.com

    Tutorien Wenn Sie statt der systematischen Erlernung nach schnellen Probleml-sungen suchen und im Buch nicht genau die Antwort finden, helfen Tuto-rien oft weiter. Dies sind kompakte Lehrgnge, die sich in wenigen Minu-ten absolvieren lassen und auf ein spezielles Thema eingehen. Beispiele finden Sie unter den folgenden Adressen im Internet:

    Website zum Buch

    Partnersite zum Buch

  • 34 1 Einfhrung

    http://www.dynamic-webpages.de/05.tutorials.php

    http://www.php-center.de/tutorial

    Beispielskripte Beispielskripte stehen in der Regel frei zur Verfgung, einige Skripte in diesem Buch wurden den folgenden Seiten entnommen, die eine uner-schpfliche Quelle cleverer Lsungen darstellen:

    http://px.sklar.com

    http://www.weberdev.com

    http://www.phparchiv.de

    Mailinglisten Eine sehr effektive Informationsquelle sind Mailinglisten. Die aktivste Mailingliste erreichen Sie unter [email protected]. Die Liste ist aller-dings extrem noisy, das heit, die Anzahl an brauchbaren und auch unbrauchbaren Postings ist sehr hoch. An Spitzentagen knnen Sie schon mal mit einigen Hundert E-Mails rechnen. Glcklicherweise gibt es ein Archiv, in dem Sie auch die aktuellsten Postings finden. Die Webadresse ist http://www.php.net/list. Und Freunde des Usenet finden die passende, inhaltsgleiche Newsgroup unter nntp://news.php.net. Allerdings knnen Sie nicht an die Newsgroup posten. Sie mssen Fragen an die Mailingliste schicken und die Antworten erscheinen dann, zusammen mit der Frage, auch in der Newsgroup. Eine echte Newsgroup zum Thema PHP gibt es noch nicht. Wenn Sie mit der Liste arbeiten mchten, bietet sich der Di-gest-Dienst an, der zweimal am Tag die gesammelten Werke als kom-pakte E-Mail versendet. Vor allem Anfngern, die nur als Lurker1 an der Liste teilnehmen, kann ich diese Form empfehlen. Weitere Informationen ber internationale Listen zu PHP finden Sie unter:

    http://www.php.net/support.php

    Newsforum Es existiert neben dem schon erwhnten Read-Only-Forum noch eine echte deutsche Newsgroup mit dem Namen DE.COMP.LANG.PHP. Wenn Ihr Provider die Gruppe nicht fhrt, schauen Sie unter http://www.deja.com nach.

    1 Lurker (vom engl. Lurk = Versteck) sind Personen, die in ffentlichen Listen nur als Leser teilnehmen. Lurken wird Anfngern empfohlen, um die Ge-wohnheiten einer Liste oder Newsgroup kennen zu lernen und zu vermeiden, dass zu viele Personen zu simple Fragen stellen.

    Mailinglisten bieten oft Erste Hilfe bei Problemen

    Im Usenet

  • 1.5 Dynamische Webseiten 35

    1IRC Internet Relay Chat Es gibt einen internationalen und einen deutschen Channel im IRC, kon-kret im Effnet. Die Qualitt schwankt sehr stark zwischen hervorragenden Beitrgen der Entwickler und vlligem OT2. Die Channel heien #PHP und #PHPNET.

    Foren Reine Foren sind praktisch webbasierte Listen. Der Umgang ist einfacher und weniger arbeitsintensiv als bei Mailinglisten, verlangt aber etwas Eigeninitiative. Whlen Sie beispielsweise die folgenden Adressen:

    http://analogon.com/php/forum

    http://www.phpwelt.de/powerboard/

    1.5 Dynamische Webseiten Unter dynamischen Webseiten werden Seiten verstanden, deren endglti-ge, an den Server gesendete Form erst im Augenblick des Abrufes ent-steht. So knnen Daten interaktiv in die Seiten eingebaut werden.

    Der Vorteil besteht vor allem in der Mglichkeit, auf Nutzereingaben reagieren zu knnen. Formulare lassen sich sofort auswerten und schon die nchste Seite kann den Inhalt wiedergeben oder Reaktionen darauf zeigen. Die Anwendungsmglichkeiten sind fast unbegrenzt. Ob und in welchem Umfang auerdem Datenbanken zum Einsatz kommen, hngt von der Zielstellung ab. Dynamische Webseiten an sich bentigen keine Datenbank. Sie sollten sich vor allem als Anfnger nicht dem Zwang un-terziehen, gleich jedes Problem mit der Hilfe einer Datenbank zu lsen, auch wenn Profis dies bevorzugen wrden. Im Buch werden viele Beispie-le gezeigt, die mit einfachsten Mitteln beeindruckende Effekte erzielen ganz ohne Datenbank.

    Die Entstehung einer dynamischen Website wird in Abbildung 1.1 erlu-tert. Zuerst fordert der Nutzer mit seinem Browser ein Skript an. Der Webserver leitet diese Anfrage aufgrund der Dateierweiterung an ein bestimmtes Programm weiter, beispielsweise das PHP-Modul. Dort wird die Seite durchsucht und darin enthaltene Codes werden ausgefhrt. Daraus entsteht wiederum HTML-Code, einschlielich der Daten aus Datenbankabfragen oder frheren Nutzereingaben. Die fertige Seite wird dem Webserver zurckgegeben, der sie dann an den Browser sendet.

    Fr das Skript besteht damit jede Freiheit, den HTML-Code zu erzeugen und mit Daten anzureichern. Als Skriptsprache kommen viele Mglichkei-ten in Betracht, von denen PHP sicher eine der attraktivsten ist. Andere

    2 In Newsgroups und Listen werden Beitrge, die nicht zum Hauptthema passen, als Off Topic = OT bezeichnet.

    Im Effnet

    Im WWW

    Grundlagenwissen

  • 36 1 Einfhrung

    Skriptumgebungen sind ASP (Active Server Pages) mit den Sprachen VBScript und JScript, ASP+ mit zustzlich C# (sprich C Sharp) und natrlich Perl. Seltener verwendet werden JavaScript (Netscape Webser-ver) oder Python.

    1.6 Linux oder Windows? Die Frage nach dem richtigen Betriebssystem wird oft gestellt. Da PHP aus der Open Source-Szene kommt, ist Linux klar favorisiert. Wenn Sie noch keine feste Beziehung zu einem Betriebssystem haben, ist die Wahl nicht ganz so einfach.

    Gewissensfrage Linux Linux als alternative Plattform zu Microsofts Windows ist in aller Munde. Kaum eine Zeitschrift ohne Artikel, kaum ein Leserbrief ohne begeisterten Kommentar. Aber wozu stellt Linux wirklich eine Alternative dar? Im Web tobt ein regelrechter Glaubenskrieg zwischen den Anhngern von Linux und Windows. PHP kommt aus der Unix-Welt und hat sich beson-ders schnell auf Linux-Servern verbreitet. Wenn Sie noch vor der Wahl der Plattform stehen, sollten Sie Linux ernsthaft als primre Variante in Betracht ziehen. Vielleicht helfen Ihnen ein paar Hintergrundinformatio-nen weiter.

    Das Betriebssystem Linux ist ein UNIX-Derivat. Im Gegensatz zu fast allen anderen Unix-Versionen ist es unter der General Public License (GPL) verffentlicht, im Quellcode zugnglich und als Open Source (siehe nchster Abschnitt) erhltlich. Diese Form des Softwarevertriebs ist im kommerziell orientierten Softwaremarkt kaum bekannt und birgt einige Besonderheiten. So sind zwar Quellen und diverse Hilfsprogramme auf Webservern im Internet frei verfgbar, eine praktisch nutzbare Form stel-len diese jedoch nicht dar. Linux ist ein System vor allem fr Entwickler. Es arbeitet auch auf bescheidener Hardware zufriedenstellend und be-sticht durch die fr Unix typische Netzwerkfhigkeit und Mehrnutzerun-

    Abbildung 1.1: So entsteht eine dynamische Website

    Ist Linux eine Alternative?

  • 1.6 Linux oder Windows? 37

    1tersttzung. Dies sind Funktionen, die am Desktop vor allem am husli-chen nicht oder nur selten bentigt werden. Linux ist deshalb bislang und wohl auch in der Zukunft keine Alternative am Arbeitsplatz. Die oft bemngelte Untersttzung bestimmter Hardware, wie Soundkarten oder Video, ist hinderlich fr einen erfolgreichen Einbruch in die Microsoft-Domne Desktop.

    Eine neue Welt Ein Argument ist der Preis fr die Software-Lizenz. Auer der fr etwa 100 DM erhltlichen Distribution fllt bei Freeware nichts weiter an. Wer-den davon einige Dutzend Server installiert, ist der Unterschied zu jedem kommerziell verfgbaren System erheblich. Der erklrte Feind der Linux-Jnger ist Windows. Linux verfgt ber Strken im Netzwerkbereich und die sind beim Einsatz als Webserver besonders gefragt. Die aktuellen Statistiken fr den Einsatz von Linux (siehe Abbildung 1.2) zeigen dies deutlich. Erstaunlich ist dabei, dass die Entwicklung sich offenbar nicht zu Ungunsten der bestehenden Windows NT-Server vollzieht, sondern den kommerziellen und teuren Unixen, allen voran Marktfhrer Sun (Solaris), das Wasser abgrbt (siehe Tabelle 1.1). Daran ndert auch die emotional hochgepeitschte Stimmung gegen Microsoft nichts. Jeder kommerzielle Anbieter eines Unix will seinen Markt beherrschen und Geld mit Services verdienen, die erst durch sein System notwendig werden. Genau an dieser Stelle sollte man auch Linux kritisch betrachten.

    Quelle: The Internet Operating System Counter, www.leb.net/hzo/ioscount; (April 1999)

    Betriebssystem 01/99 04/99 Vernderung

    Linux 28,5 % 31,3 % + 2,8 %

    Windows NT 24,4 % 24,3 % - 0,1 %

    Solaris 17,5 % 16,7 % - 1,0 %

    BSD 15,0 % 14,6 % - 0,4 %

    IRIX 5,3 % 4,6 % - 0,7 %

    Apple 1,6 % 2,1 % + 0,5 %

    Quelle: The Internet Operating System Counter www.leb.net/hzo/ioscount; (April 1999)

    Was spricht fr Linux?

    Abbildung 1.2: Verteilung der Betriebssysteme fr .de-Domains

    Tabelle 1.1: Vernderung der Betriebssystem-nutzung fr Webserver zwischen Januar 1999 und April 1999 (globale Nutzung mit .edu-Domains)

    37,8%

    28,5%

    18,5%

    4,1%6,6% 1,1%

    0,6%

    0%

    10%

    20%

    30%

    40%

    Anteil

    LinuxSolarisWindowsBSDIRIXAppleHP-UX

  • 38 1 Einfhrung

    Kostenlos ist nicht umsonst Linux-Server kosten Geld, und das nicht zu knapp. Der Kaufpreis ist eine einmalige Angelegenheit und das Betriebssystem ist nur ein Teil der In-vestition. Auch wenn viele Programme fr Linux ebenfalls unter der GPL verffentlicht werden sie installieren und pflegen sich nicht von selbst. Unix ist ein anspruchsvolles System, von und fr Softwareentwickler und Administratoren entwickelt. An dieser Ausrichtung ndern auch grafische Aufstze KDE nichts.

    Die Notwendigkeit umfangreichen Fachwissens ist denn auch das eigent-liche Problem im Umgang mit Linux. Spezialisten kosten bekanntlich Geld. Und wenn jemand meint, er sei ein Spezialist und arbeite umsonst, dann ist die Leistung meist auch entsprechend. Kritische Applikationen sind aber kein Spielgegenstand fr in der Ausbildung befindliche Admi-nistratoren. Ein Linux-Server kann im Laufe der Zeit teuer werden. Vor allem beim stndigen Zugriff auf entsprechende Fachleute. Dies berck-sichtigen die Freaks natrlich nicht, denn sie beherrschen das System und halten endlose Kommandozeilen oder schnell entworfene Batch-Skripte fr normal.

    Erinnern Sie sich an die Diskussionen ber DOS und den Hass auf die DOSen-Computer? Wegen der ungeliebten Kommandozeile und der kryptischen Bedienung belchelten stolze Besitzer eines Apple-Computers die Microsoft-Anhnger. Das Lcheln wurde schmaler, als Windows sei-nen Siegeszug antrat. Es dauerte jedoch nur ein paar Tage, da war klar: Windows ist nur ein Aufsatz fr DOS, kein richtiges Betriebssystem, eben nur Show. Die Diskussion mag heute niemand mehr wiederholen, den-noch erinnert man sich bei Linux manchmal daran. Das eigentliche Be-triebssystem kennt nur den Prompt weier blinkender Cursor auf schwarzem Grund. Alles andere sind mehr oder weniger gelungene und mehr oder weniger zueinander kompatible Aufstze iMac-Besitzer mssten vor Lachen keine Luft mehr bekommen.

    Es sind jedoch handfeste technische Parameter, die den Einsatz von Linux als Server zu einer sinnvollen Investition werden lassen.

    Auf dem Weg zum Markt Das Internet steht mit allen seinen Ausprgungen und Chancen noch ganz am Anfang. Linux ist ein typischer Wegbereiter fr einen jungen Markt. Es ist leicht zu testen, steht in vielen Distributionen zur Verfgung und wird oft mit einer ganzen Palette ebenso preiswerter oder kostenloser wie wertvoller Software gebundelt. Linux wird von vielen Entwicklern pro-grammiert, einzig der Kernel die Kernsoftware wird von den ur-sprnglichen Entwicklern der ersten Version, allen voran Erfinder Linus Torvald, gezielt freigegeben.

    Fr die jungen Start-Ups, allen voran die vielen Internet Service Provider (ISP), ist Geld ein entscheidender Faktor. Fr einen so jungen Markt ist der enorme Preisverfall der Dienstleistungen eine groe Bedrohung, jede Mark ist entscheidend. Hier hat Linux und die reichhaltige Open Source-

    Was kostet Linux?

  • 1.6 Linux oder Windows? 39

    1Software, wie der Apache-Webserver, einen Vorteil. Dies fhrte zu der enormen Verbreitung im Bereich der Webserver. Und dieselben Firmen werden oft auch von den Spezialisten gegrndet, die sich aufgrund ihres berragenden Fachwissens fr fhig genug halten, ein solches System zu beherrschen. Sie kennen sich auch mit dem Medium Internet perfekt aus, knnen die vielen Quellen fr Hilfe und Untersttzung finden und nut-zen.

    Eben diese Untersttzung macht letztendlich Microsoft, Sun und HP mit ihren Systemen so stark, egal ob diese auf NT oder Unix basieren. Es ist nicht der oft zu Recht gescholtene Microsoft-Support, der hier hervorge-hoben werden soll. Es ist die Ausbildungslinie, die ein Produkt so stark macht. Wenn Sie einen Experten fr Windows NT brauchen, achten Sie auf sein MCSE-Zertifikat. hnliches vergibt auch Sun, bekannt fr sehr teure, aber auch ausgesprochen professionelle Kurse. Es ist gut zu erken-nen, wer Experte ist und wer sich nur als solcher bezeichnet. Ich will Li-nux-Experten keineswegs unterstellen, sie wren mangels Herstellerzer-tifikat schlechter. Aber der unbedarfte Anwender, der sein mit viel Auf-wand entwickeltes E-Commerce-System lauffhig halten muss, muss sich praktisch an Besttigungen unbekannterer Firmen orientieren. Trotzdem sind Linux-Experten inzwischen zu bekommen und der Support der Distributoren und angeschlossener Hndler ist durchaus professionell. In diesem Umfeld kann Linux ebenso zum Einsatz gelangen wie jedes ande-re System. Sie sollten also wegen der bereits erwhnten technischen Vor-teile Linux unbedingt ernsthaft in Erwgung ziehen. Der geringfgig hhere Einarbeitsaufwand lohnt sich allemal, solange der Schwerpunkt nicht der Desktop ist.

    Der Autor selbst entwickelt unter Windows und nutzt als Produktions-server Linux eine ebenso sinnvolle wie leistungsstarke Kombination.

    Vor dem Einsatz Vor dem Aufbau eines E-Commerce-Systems steht nicht nur die Wahl der Software, sondern die Wahl des gesamten Systems. Der Einstiegslevel bringt dabei wenig Auswahlmglichkeiten. Mietsysteme laufen auf ir-gendeiner Plattform und werden per Browser bedient. Im nchsten Schritt sind oft eigene Server erforderlich, die beim Provider stehen. Sptestens hier mssen Sie sich nun doch entscheiden. Die in letzter Zeit mit wech-selndem Ergebnis grassierenden Vergleiche Windows NT versus Linux haben vor allem gezeigt, dass es keinen Sieger gibt. Die Frage des richti-gen Betriebssystems ist also nicht eine Frage der Leistung auf einer be-stimmten Hardware. Sicher gibt es Dutzende konstruierte Grenzflle, wo das eine oder andere System klar vorne liegt. Fr die Masse der Anwen-dungen spielt das aber kaum eine Rolle. Bleibt die Untersttzung durch eigene Administratoren und die Verfgbarkeit entsprechender Software.