Schnellübersicht | 6 |
Vorwort | 8 |
Inhaltsverzeichnis | 10 |
1 Vor dem Start | 18 |
1.1 Wer sind Sie? | 20 |
1.2 Hinweise zum Buch | 20 |
1.2.1 Schreibweisen im Buch | 21 |
1.2.2 Wichtige Symbole | 21 |
1.2.3 Was nicht aufgeführt wurde | 21 |
1.2.4 Navigationshilfen | 22 |
1.3 Installation | 22 |
1.3.1 LAMP | 22 |
1.3.2 WAMP | 23 |
1.3.3 WPMP | 23 |
1.3.4 WIMP | 23 |
1.3.5 Andere Server | 23 |
1.4 Softwarequellen | 24 |
1.5 Hilfe im Web | 24 |
1.6 Website zum Buch | 25 |
1.7 Welche PHP-Version? | 25 |
2 Dynamik in der Webseite | 26 |
2.1 HTML ist langweilig | 28 |
2.1.1 Mysterium CGI | 28 |
2.1.2 Was Webserver noch können | 29 |
2.1.3 Hochgesteckte Erwartungen | 29 |
2.2 Werden Sie ein guter Programmierer! | 30 |
2.2.1 Ein wenig Theorie | 30 |
2.2.2 Mit Paradigmen vom Problem zur Lösung | 31 |
2.2.3 Programmieren mit Stil | 32 |
2.3 PHP ist einfach | 33 |
2.3.1 Sofort etwas ausprobieren | 33 |
2.3.2 Wo wird programmiert? | 34 |
2.3.3 Wo wird PHP abgearbeitet? | 34 |
2.3.4 PHP und HTML | 35 |
2.4 Erstellen und Testen | 39 |
2.4.1 Sind Sie startklar? | 39 |
3 Variablen und Konstanten | 46 |
3.1 Variablen erzeugen und erkennen | 48 |
3.2 Datentypen | 49 |
3.2.1 Datentypen darstellen und erzwingen | 50 |
3.3 Variablen genauer betrachtet | 52 |
3.3.1 Verweise | 53 |
3.4 Konstanten | 53 |
3.4.1 Definition von Konstanten | 54 |
3.4.2 Vordefinierte Konstanten | 55 |
4 Rechnen und Verarbeiten | 56 |
4.1 Zeichenketten | 58 |
4.1.1 Zeichenkettenfunktionen | 58 |
4.1.2 Basiswissen für Zeichenketten | 59 |
4.1.3 Zeichenketten in der Praxis | 64 |
4.1.4 HTML problemlos verwenden | 69 |
4.2 Praktische Mathematik | 72 |
4.2.1 Operatoren | 72 |
4.2.2 Mathematische Funktionen | 77 |
4.2.3 Funktionen beliebiger Genauigkeit | 81 |
5 Komplexe Datenstrukturen: Arrays | 84 |
5.1 Wie Arrays funktionieren | 86 |
5.1.1 Eindimensionale Arrays | 86 |
5.1.2 Sprechende Indizes: Assoziative Arrays | 89 |
5.1.3 Mehrdimensionale Arrays | 91 |
5.1.4 Mehrdimensionale Arrays verarbeiten | 92 |
5.2 Die Arrayfunktionen | 94 |
5.3 Zugriff auf Array-Elemente | 95 |
5.3.1 Arrays durchlaufen | 96 |
5.3.2 Mit Arrays spielen | 96 |
5.3.3 Interessante Arrayeffekte | 97 |
6 Das Steuerrad für PHP: Kontrollstrukturen | 100 |
6.1 Übersicht | 102 |
6.1.1 Strukturiertes Programmieren | 102 |
6.1.2 Blöcke | 104 |
6.2 Verzweigungen | 105 |
6.2.1 Bedingungen | 105 |
6.2.2 Bedingungen mit if auswerten | 107 |
6.2.3 Mehrfachauswertungen mit switch | 109 |
6.3 Schleifen | 111 |
6.3.1 Standardschleifen mit while | 111 |
6.3.2 Die »Mindest-Schleife« mit do ... while | 113 |
6.3.3 Abzählbare Schleifen: for( | | ) | 115 |
6.3.4 Felder bestellen: foreach | 117 |
6.4 Ordnung ins Chaos: Funktionen | 119 |
6.4.1 Die Welt erschaffen: Funktionsdefinition | 119 |
6.4.2 Kleine Welten: Variablen in Funktionen | 120 |
6.5 Fehler einfangen: try@ catch | 132 |
6.5.1 Bei Fehler: Abbiegen | 133 |
6.5.2 Einfache Fehlerbehandlungen | 134 |
6.5.3 Fehlerunterdrückung mit @ | 134 |
7 Sammeltransporte: Objekte | 138 |
7.1 Einführung in die Welt der Objekte | 140 |
7.1.1 Das Konzept | 140 |
7.1.2 Das erste Objekt | 141 |
7.2 Erweiterte Techniken für Objekte | 144 |
7.2.1 Direkter Zugriff auf Klassen | 144 |
7.2.2 Konstruktoren und Destruktoren | 145 |
7.2.3 Vererbung und Schnittstellen | 147 |
7.3 Spezielle Funktionen | 149 |
7.3.1 Methoden aufrufen | 149 |
7.3.2 Eigenschaften von Klassen ermitteln | 150 |
7.4 Klassenpraxis | 151 |
7.4.1 Herausforderung: Grafik selbstgebaut | 151 |
7.5 Eingebaut: Die Fehlerklassen | 156 |
7.5.1 Die Klasse Exception | 156 |
7.5.2 Praktischer Einsatz der Fehlerbehandlung | 158 |
8 Daten bewegen: Dateisystem und FTP | 162 |
8.1 Dateisystem | 164 |
8.1.2 Zugriff auf Dateien | 165 |
8.1.3 Mit Dateien arbeiten | 180 |
8.2 Umgang mit Verzeichnissen | 182 |
8.2.1 Basisfunktionen | 182 |
8.2.2 Im Verzeichnissystem bewegen | 182 |
8.3 Verbindungen zu Servern | 184 |
8.3.1 HTTP-Verbindungen | 184 |
8.3.2 FTP-Verbindungen mit Dateifunktionen | 187 |
8.4 FTP-Funktionen | 188 |
8.4.1 Verbindung zu FTP-Servern | 188 |
8.4.2 Navigation im Verzeichnisbaum | 191 |
9 Daten aus dem Browser: Formulare und Links | 196 |
9.1 Daten aus einem Formular ermitteln | 198 |
9.1.1 Formulare in HTML erstellen | 198 |
9.1.2 Formularelemente analysieren | 203 |
9.1.3 Dateiupload | 208 |
9.2 Daten per URL weiterreichen | 214 |
9.2.1 Wie werden Daten weitergereicht? | 214 |
9.2.2 Probleme mit der Datenübertragung | 216 |
9.3 Daten über den Server ermitteln | 220 |
9.3.1 Servervariablen ermitteln | 220 |
9.3.2 Übersicht Servervariablen | 221 |
10 Big Brother: Sessions und Cookies | 224 |
10.1 Wozu dienen Sessions? | 226 |
10.2 Sessionmanagement | 227 |
10.2.1 Wie Sessions funktionieren | 227 |
10.2.2 Ausblick | 240 |
10.3 Cookies | 242 |
10.3.1 Einführung in Cookies | 242 |
10.3.2 Cookies mit PHP verarbeiten | 245 |
11 Datenbanken: So werden Daten gespeichert | 250 |
11.1 Vorbemerkungen | 252 |
11.2 Ganz universell: SQL | 252 |
11.2.1 Grundsätzliche Konzepte | 252 |
11.2.2 Vorbereitungen | 258 |
11.3 Mit MySQL arbeiten | 260 |
11.3.1 Datenbanken und Tabellen erzeugen | 260 |
11.3.2 Mit Datenbanken arbeiten | 262 |
11.3.3 Weitere Tabellenfunktionen | 269 |
11.3.4 Die MySQL-Funktionen | 270 |
11.3.5 PHP-Funktionen für MySQL | 270 |
11.4 MySQL ganz praktisch | 272 |
11.4.1 Vorbereiten des Projekts | 272 |
11.4.2 Aufbau der Skripte | 273 |
11.4.3 Die Skripte im Detail | 273 |
11.4.4 Diskussion der Idee | 284 |
11.5 SQLite kurz vorgestellt | 285 |
11.5.1 Der SQLite SQL-Dialekt | 285 |
11.5.2 Die SQLite-Funktionen | 289 |
11.6 SQLite ganz praktisch | 291 |
11.6.1 Das Projekt vorbereiten | 291 |
11.6.2 Der Quellcode | 292 |
11.6.3 Diskussion | 297 |
12 Symbiose: PHP und JavaScript | 298 |
12.1 Warum JavaScript? | 300 |
12.1.1 Prinzipielle Fragen zu JavaScript | 300 |
12.1.2 JavaScript erkennen | 301 |
12.2 Umgang mit Formularen | 303 |
12.2.1 Projekt: Eine Abstimmungssite | 303 |
12.3 Gutes Zusammenspiel: Der Chat | 307 |
12.3.1 Vorbereitung: Die Datenbank | 307 |
12.3.2 Mehr Leistung durch JavaScript | 312 |
13 1000 kleine Helfer: Die PHP- Funktionen | 314 |
13.1 Übersicht | 316 |
13.2 Hilfsdesigner: Bildfunktionen mit GD2 | 316 |
13.2.1 Bilddaten dynamisch erzeugen | 316 |
13.2.2 Bilder dynamisch erzeugen | 317 |
13.2.3 Umgang mit Fehlern | 321 |
13.2.4 Weitere Bildfunktionen | 322 |
13.3 Suchexperten: Reguläre Ausdrücke | 324 |
13.3.1 Kennen Sie Perl? | 324 |
13.3.2 Überall reguläre Ausdrücke | 324 |
13.3.3 Erstellen einfacher Muster | 329 |
13.3.4 Vom Einfachen zum Komplexen | 330 |
13.3.5 Suchen und Ersetzen | 333 |
13.3.6 Alle Metazeichen auf einen Blick | 334 |
13.3.7 Funktionen für reguläre Ausdrücke | 336 |
13.4 Zeitwächter: Datumsfunktionen | 337 |
13.4.1 Probleme mit Datumswerten | 337 |
13.4.2 Datumsfunktionen | 338 |
14 Fehlersuche und Konfiguration | 348 |
14.1 Die Informationszentrale | 350 |
14.2 Konfiguration mit »php.ini« | 351 |
14.3 Tipps zur Fehlersuche | 362 |
14.4 Typische Fehler | 362 |
14.4.1 Verwendung von printf und print | 362 |
14.4.2 Missbrauch des Variablenersatzes | 363 |
14.4.3 Umgang mit Variablen | 363 |
14.4.4 Paradigmen und deren Gültigkeit | 364 |
14.4.5 Missverstandene Kontrollstrukturen | 364 |
14.4.6 Fehler beim Umgang mit Datenbanken | 364 |
Anhang | 366 |
A Listings | 368 |
B Quickreferenz MySQL 4 | 374 |
C Empfehlungen | 388 |
D Index | 392 |
E An den Autor | 400 |