|
Inhaltsverzeichnis |
8 |
|
|
Teil 1 – PHP verwenden |
34 |
|
|
1 Ein Schnellkurs in PHP |
36 |
|
|
1.1 PHP verwenden |
37 |
|
|
1.2 Eine Beispielanwendung erstellen |
37 |
|
|
1.2.1 Das Bestellformular erstellen |
38 |
|
|
1.2.2 Formular verarbeiten |
39 |
|
|
1.3 PHP in HTML einbetten |
40 |
|
|
1.3.1 PHP-Tags |
41 |
|
|
1.3.2 PHP-Anweisungen |
42 |
|
|
1.3.3 Whitespace |
43 |
|
|
1.3.4 Kommentare |
43 |
|
|
1.4 Dynamische Inhalte einfügen |
44 |
|
|
1.4.1 Funktionen aufrufen |
46 |
|
|
1.4.2 Die Funktion date() verwenden |
46 |
|
|
1.5 Auf Formularvariablen zugreifen |
46 |
|
|
1.5.1 Formularvariablen |
46 |
|
|
1.5.2 Strings verketten |
50 |
|
|
1.5.3 Variablen und Literale |
51 |
|
|
1.6 Bezeichner |
52 |
|
|
1.7 Variablentypen untersuchen |
53 |
|
|
1.7.1 Datentypen in PHP |
53 |
|
|
1.7.2 Typenstringenz |
53 |
|
|
1.7.3 Typumwandlung |
54 |
|
|
1.7.4 Variable Variablen |
54 |
|
|
1.8 Konstanten deklarieren und verwenden |
55 |
|
|
1.9 Der Gültigkeitsbereich von Variablen |
56 |
|
|
1.10 Operatoren verwenden |
57 |
|
|
1.10.1 Arithmetische Operatoren |
57 |
|
|
1.10.2 Stringoperatoren |
59 |
|
|
1.10.3 Zuweisungsoperatoren |
59 |
|
|
1.10.4 Vergleichsoperatoren |
61 |
|
|
1.10.5 Logische Operatoren |
63 |
|
|
1.10.6 Bitoperatoren |
63 |
|
|
1.10.7 Weitere Operatoren |
64 |
|
|
1.11 Errechnen der Summen im Formular |
66 |
|
|
1.12 Präzedenz und Assoziativität verstehen |
68 |
|
|
1.13 Variablenfunktionen verwenden |
70 |
|
|
1.13.1 Variablentypen testen und setzen |
70 |
|
|
1.13.2 Variablenstatus testen |
71 |
|
|
1.13.3 Variablen konvertieren |
72 |
|
|
1.14 Mit Bedingungsanweisungen Entscheidungen treffen |
72 |
|
|
1.14.1 if-Anweisungen |
73 |
|
|
1.14.2 Codeblöcke |
73 |
|
|
1.14.3 else-Anweisungen |
74 |
|
|
1.14.4 elseif-Anweisungen |
74 |
|
|
1.14.5 switch-Anweisungen |
75 |
|
|
1.14.6 Vergleich zwischen den Bedingungsanweisungen |
77 |
|
|
1.15 Vorgänge mit Schleifen wiederholen |
77 |
|
|
1.15.1 while-Schleifen |
79 |
|
|
1.15.2 for- und foreach-Schleifen |
80 |
|
|
1.15.3 do..while-Schleifen |
82 |
|
|
1.16 Aus einer Kontrollstruktur oder einem Script ausbrechen |
82 |
|
|
1.17 Eine alternative Syntax für Kontrollstrukturen verwenden |
83 |
|
|
1.18 declare verwenden |
83 |
|
|
1.19 Ausblick |
84 |
|
|
2 Daten speichern und abrufen |
86 |
|
|
2.1 Daten für den späteren Gebrauch speichern |
86 |
|
|
2.2 Bobs Bestellungen speichern und abrufen |
87 |
|
|
2.3 Dateien verarbeiten |
88 |
|
|
2.4 Eine Datei öffnen |
88 |
|
|
2.4.1 Dateimodi auswählen |
88 |
|
|
2.4.2 Eine Datei mit fopen() öffnen |
89 |
|
|
2.4.3 Dateien mit FTP oder HTTP öffnen |
92 |
|
|
2.4.4 Probleme beim Öffnen von Dateien beheben |
93 |
|
|
2.5 In eine Datei schreiben |
95 |
|
|
2.5.1 Parameter für fwrite() |
96 |
|
|
2.5.2 Dateiformate |
96 |
|
|
2.6 Datei schließen |
97 |
|
|
2.7 Daten aus einer Datei auslesen |
99 |
|
|
2.7.1 Datei mit fopen() zum Lesen öffnen |
100 |
|
|
2.7.2 Das Dateiende mit feof() erkennen |
100 |
|
|
2.7.3 Daten mit fgets(), fgetss() und fgetcsv() zeilenweise auslesen |
100 |
|
|
2.7.4 Datei mit readfile(), fpassthru() und file() vollständig auslesen |
102 |
|
|
2.7.5 Ein Zeichen mit fgetc() auslesen |
103 |
|
|
2.7.6 Eine beliebige Datenmenge mit fread() auslesen |
103 |
|
|
2.8 Weitere nützliche Funktionen für Dateien |
104 |
|
|
2.8.1 Mit file_exists() auf das Vorhandensein einer Datei prüfen |
104 |
|
|
2.8.2 Mit filesize() die Dateigröße ermitteln |
104 |
|
|
2.8.3 Datei mit unlink() löschen |
104 |
|
|
2.8.4 Mit rewind(), fseek() und ftell() in einer Datei navigieren |
105 |
|
|
2.9 Dateien sperren |
106 |
|
|
2.10 Eine bessere Lösung: Datenbankmanagementsysteme |
107 |
|
|
2.10.1 Probleme bei der Verwendung flacher Dateien |
108 |
|
|
2.10.2 Wie ein RDBMS diese Probleme beseitigt |
108 |
|
|
2.11 Weiterführende Literatur |
109 |
|
|
2.12 Ausblick |
109 |
|
|
3 Arrays |
110 |
|
|
3.1 Was ist ein Array? |
111 |
|
|
3.2 Numerisch indizierte Arrays |
112 |
|
|
3.2.1 Numerisch indizierte Arrays initialisieren |
112 |
|
|
3.2.2 Auf Array-Inhalte zugreifen |
113 |
|
|
3.2.3 Mithilfe von Schleifen auf Arrays zugreifen |
114 |
|
|
3.3 Arrays mit unterschiedlichen Indizes |
114 |
|
|
3.3.1 Ein Array initialisieren |
114 |
|
|
3.3.2 Auf Array-Inhalte zugreifen |
115 |
|
|
3.3.3 Schleifen verwenden |
115 |
|
|
3.4 Array-Operatoren |
117 |
|
|
3.5 Mehrdimensionale Arrays |
118 |
|
|
3.6 Arrays sortieren |
121 |
|
|
3.6.1 sort() verwenden |
121 |
|
|
3.6.2 Mit asort() und ksort() sortieren |
122 |
|
|
3.6.3 Umgekehrte Sortierreihenfolge |
123 |
|
|
3.7 Mehrdimensionale Arrays sortieren |
123 |
|
|
3.7.1 Benutzerdefinierte Sortierung |
123 |
|
|
3.7.2 Umgekehrte benutzerdefinierte Sortierung |
125 |
|
|
3.8 Arrays umstellen |
126 |
|
|
3.8.1 shuffle() verwenden |
126 |
|
|
3.8.2 array_reverse() verwenden |
128 |
|
|
3.9 Arrays aus Dateien laden |
128 |
|
|
3.10 Andere Funktionen zur Array-Manipulation |
131 |
|
|
3.10.1 Mit each(), current(), reset(), end(), next(), pos() und prev() im Array navigieren |
131 |
|
|
3.10.2 Mit array_walk() eine beliebige Funktion auf jedes Element im Array anwenden |
132 |
|
|
3.10.3 Mit count(), sizeof() und array_count_values() Elemente in einem Array zählen |
134 |
|
|
3.10.4 Mit extract() Arrays in skalare Variablen konvertieren |
134 |
|
|
3.11 Weiterführende Literatur |
136 |
|
|
3.12 Ausblick |
136 |
|
|
4 Manipulation von Strings und reguläre Ausdrücke |
138 |
|
|
4.1 Beispielanwendung erstellen: Ein intelligentes Mailformular |
138 |
|
|
4.2 Strings formatieren |
141 |
|
|
4.2.1 Strings mit trim(), ltrim() und rtrim() zurechtschneiden |
141 |
|
|
4.2.2 Strings für die Darstellung formatieren |
141 |
|
|
4.2.3 Mit addslashes() und stripslashes() Strings für die Speicherung formatieren |
145 |
|
|
4.3 Strings zusammenfügen und trennen |
147 |
|
|
4.3.1 explode(), implode() und join() verwenden |
148 |
|
|
4.3.2 strtok() verwenden |
149 |
|
|
4.3.3 substr() verwenden |
149 |
|
|
4.4 Strings vergleichen |
150 |
|
|
4.4.1 Mit strcmp(), strcasecmp() und strnatcmp() Strings sortieren |
151 |
|
|
4.4.2 Die Stringlänge mit strlen() testen |
151 |
|
|
4.5 Teilstrings mithilfe von Stringfunktionen vergleichen und ersetzen |
152 |
|
|
4.5.1 Mit strstr(), strchr(), strrchr() und stristr() Strings in Strings finden |
152 |
|
|
4.5.2 Mit strpos() und strrpos() die Position eines Teilstrings suchen |
153 |
|
|
4.5.3 Teilstrings mit str_replace() und substr_replace() ersetzen |
154 |
|
|
4.6 Einführung in reguläre Ausdrücke |
156 |
|
|
4.6.1 Die Grundlagen |
156 |
|
|
4.6.2 Zeichenmengen und Klassen |
157 |
|
|
4.6.3 Wiederholungen |
158 |
|
|
4.6.4 Teilausdrücke |
159 |
|
|
4.6.5 Gezählte Teilausdrücke |
159 |
|
|
4.6.6 Anker am Anfang oder Ende eines Strings setzen |
159 |
|
|
4.6.7 Auswahl |
160 |
|
|
4.6.8 Literale Sonderzeichen |
160 |
|
|
4.6.9 Wiederholung der Sonderzeichen |
161 |
|
|
4.6.10 Reguläre Ausdrücke praktisch anwenden |
162 |
|
|
4.7 Teilstrings mit regulären Ausdrücken finden |
163 |
|
|
4.8 Teilstrings mit regulären Ausdrücken ersetzen |
164 |
|
|
4.9 Strings mit regulären Ausdrücken aufteilen |
164 |
|
|
4.10 Weiterführende Literatur |
165 |
|
|
4.11 Ausblick |
165 |
|
|
5 Code wiederverwenden und Funktionen schreiben |
166 |
|
|
5.1 Wiederverwenden von Code |
166 |
|
|
5.1.1 Kosten |
167 |
|
|
5.1.2 Zuverlässigkeit |
167 |
|
|
5.1.3 Konsistenz |
167 |
|
|
5.2 Die Anweisungen require() und include() |
168 |
|
|
5.2.1 require() und Dateiendungen |
168 |
|
|
5.2.2 require() für Websitevorlagen verwenden |
170 |
|
|
5.2.3 auto_prepend_file und auto_append_file verwenden |
175 |
|
|
5.3 Funktionen in PHP verwenden |
176 |
|
|
5.3.1 Funktionen aufrufen |
177 |
|
|
5.3.2 Undefinierte Funktionen aufrufen |
178 |
|
|
5.3.3 Groß-/Kleinschreibung bei Funktionsnamen |
179 |
|
|
5.4 Wann man eigene Funktionen definieren sollte |
180 |
|
|
5.5 Grundstrukturen von Funktionen untersuchen |
180 |
|
|
5.5.1 Funktionen benennen |
181 |
|
|
5.6 Parameter verwenden |
182 |
|
|
5.7 Gültigkeitsbereiche verstehen |
185 |
|
|
5.8 Übergabe als Referenz und Übergabe als Wert |
188 |
|
|
5.9 Das Schlüsselwort return verwenden |
189 |
|
|
5.9.1 Werte aus Funktionen zurückgeben |
190 |
|
|
5.10 Rekursion implementieren |
191 |
|
|
5.10.1 Namespaces |
193 |
|
|
5.11 Weiterführende Literatur |
194 |
|
|
5.12 Ausblick |
194 |
|
|
6 Objektorientiertes PHP |
196 |
|
|
6.1 Objektorientierte Konzepte verstehen |
196 |
|
|
6.1.1 Klassen und Objekte |
197 |
|
|
6.1.2 Polymorphismus |
198 |
|
|
6.1.3 Vererbung |
199 |
|
|
6.2 Klassen, Attribute und Operationen in PHP erstellen |
200 |
|
|
6.2.1 Struktur einer Klasse |
200 |
|
|
6.2.2 Konstruktoren |
200 |
|
|
6.2.3 Destruktoren |
201 |
|
|
6.3 Klassen instanzieren |
201 |
|
|
6.4 Klassenattribute verwenden |
202 |
|
|
6.5 Zugriff mit private und public steuern |
204 |
|
|
6.6 Klassenoperationen aufrufen |
205 |
|
|
6.7 Vererbung in PHP implementieren |
206 |
|
|
6.7.1 Sichtbarkeit durch Vererbung mit private und protected steuern |
207 |
|
|
6.7.2 Überschreiben von Attributen und Methoden |
208 |
|
|
6.7.3 Vererbung und Überschreiben mit final verhindern |
210 |
|
|
6.7.4 Mehrfachvererbung |
211 |
|
|
6.7.5 Schnittstellen implementieren |
211 |
|
|
6.8 Klassen entwerfen |
212 |
|
|
6.9 Code für eigene Klassen schreiben |
213 |
|
|
6.10 Erweiterte OO-Funktionalität in PHP |
222 |
|
|
6.10.1 Klassenbezogene Konstanten verwenden |
222 |
|
|
6.10.2 Statische Methoden implementieren |
222 |
|
|
6.10.3 Klassentyp prüfen und Type-Hinting |
222 |
|
|
6.10.4 Späte statische Bindungen |
223 |
|
|
6.10.5 Objekte klonen |
224 |
|
|
6.10.6 Abstrakte Klassen verwenden |
225 |
|
|
6.10.7 Methoden mit __call() überladen |
225 |
|
|
6.10.8 __autoload() verwenden |
226 |
|
|
6.10.9 Iteratoren und Iteration implementieren |
226 |
|
|
6.10.10 Klassen in Strings umwandeln |
229 |
|
|
6.10.11 Das Reflection-API verwenden |
229 |
|
|
6.11 Ausblick |
230 |
|
|
7 Fehlerbehandlung mit Exceptions |
232 |
|
|
7.1 Konzepte zur Fehlerbehandlung mit Exceptions |
232 |
|
|
7.2 Die Klasse Exception |
234 |
|
|
7.3 Benutzerdefinierte Exceptions |
235 |
|
|
7.4 Exceptions bei Bob’s Auto Parts |
237 |
|
|
7.5 Exceptions und andere Fehlerbehandlungsmethoden bei PHP |
241 |
|
|
7.6 Weiterführende Literatur |
241 |
|
|
7.7 Ausblick |
242 |
|
|
Teil 2 – MySQL einsetzen |
244 |
|
|
8 Eine Webdatenbank entwerfen |
246 |
|
|
8.1 Konzepte relationaler Datenbanken |
247 |
|
|
8.1.1 Tabellen |
247 |
|
|
8.1.2 Spalten |
248 |
|
|
8.1.3 Zeilen |
248 |
|
|
8.1.4 Werte |
248 |
|
|
8.1.5 Schlüssel |
248 |
|
|
8.1.6 Schemata |
250 |
|
|
8.1.7 Beziehungen |
250 |
|
|
8.2 Webdatenbank entwerfen |
251 |
|
|
8.2.1 Reale Objekte abbilden |
251 |
|
|
8.2.2 Speicherung redundanter Daten vermeiden |
252 |
|
|
8.2.3 Atomare Spaltenwerte verwenden |
253 |
|
|
8.2.4 Schlüssel sinnvoll wählen |
254 |
|
|
8.2.5 Mögliche Abfragen vorausplanen |
255 |
|
|
8.2.6 Leerattribute vermeiden |
255 |
|
|
8.2.7 Zusammenfassung zu den Tabellentypen |
256 |
|
|
8.3 Architektur von Webdatenbanken |
256 |
|
|
8.4 Weiterführende Literatur |
258 |
|
|
8.5 Ausblick |
258 |
|
|
9 Eine Webdatenbank erstellen |
260 |
|
|
9.1 MySQL-Monitor verwenden |
262 |
|
|
9.2 Bei MySQL anmelden |
262 |
|
|
9.3 Datenbanken und Benutzer einrichten |
264 |
|
|
9.4 Benutzer und Berechtigungen einrichten |
264 |
|
|
9.5 Das Berechtigungssystem von MySQL |
265 |
|
|
9.5.1 Das Prinzip der geringsten Berechtigung |
265 |
|
|
9.5.2 Benutzereinrichtung: Der Befehl GRANT |
265 |
|
|
9.5.3 Berechtigungstypen und -ebenen |
267 |
|
|
9.5.4 Der Befehl REVOKE |
269 |
|
|
9.5.5 Beispiele für die Verwendung von GRANT und REVOKE |
270 |
|
|
9.6 Benutzer für das Web einrichten |
271 |
|
|
9.7 Die richtige Datenbank verwenden |
272 |
|
|
9.8 Datenbanktabellen erstellen |
272 |
|
|
9.8.1 Bedeutung der Schlüsselwörter |
274 |
|
|
9.8.2 Spaltentypen verstehen |
275 |
|
|
9.8.3 Datenbank mit SHOW und DESCRIBE anzeigen |
277 |
|
|
9.8.4 Indizes erstellen |
278 |
|
|
9.9 MySQL-Bezeichner verstehen |
278 |
|
|
9.10 Spaltentypen auswählen |
279 |
|
|
9.10.1 Numerische Typen |
280 |
|
|
9.10.2 Datentypen für Datum und Uhrzeit |
282 |
|
|
9.10.3 Stringtypen |
283 |
|
|
9.11 Weiterführende Literatur |
285 |
|
|
9.12 Ausblick |
285 |
|
|
10 Mit der MySQL-Datenbank arbeiten |
286 |
|
|
10.1 Was ist SQL? |
286 |
|
|
10.2 Daten in die Datenbank einfügen |
287 |
|
|
10.3 Daten aus der Datenbank abrufen |
289 |
|
|
10.3.1 Daten mit speziellen Kriterien abrufen |
291 |
|
|
10.3.2 Daten aus mehreren Tabellen abrufen |
293 |
|
|
10.3.3 Daten in bestimmter Reihenfolge abrufen |
299 |
|
|
10.3.4 Daten gruppieren und zusammenfassen |
299 |
|
|
10.3.5 Zurückzugebende Zeilen auswählen |
301 |
|
|
10.3.6 Unterabfragen (Subqueries) verwenden |
302 |
|
|
10.4 Datensätze in der Datenbank aktualisieren |
305 |
|
|
10.5 Tabellen nachträglich ändern |
306 |
|
|
10.6 Datensätze aus der Datenbank löschen |
308 |
|
|
10.7 Tabellen löschen |
309 |
|
|
10.8 Gesamte Datenbank löschen |
309 |
|
|
10.9 Weiterführende Literatur |
309 |
|
|
10.10 Ausblick |
309 |
|
|
11 Aus dem Web mit PHP auf die MySQL-Datenbank zugreifen |
310 |
|
|
11.1 Funktionsweise von Webdatenbank- Architekturen |
310 |
|
|
11.2 Datenbank über das Web abfragen |
314 |
|
|
11.2.1 Eingabedaten prüfen und filtern |
314 |
|
|
11.2.2 Verbindung herstellen |
316 |
|
|
11.2.3 Zu verwendende Datenbank auswählen |
317 |
|
|
11.2.4 Datenbank abfragen |
317 |
|
|
11.2.5 Abfrageergebnisse abrufen |
318 |
|
|
11.2.6 Verbindung zur Datenbank trennen |
319 |
|
|
11.3 Neue Daten in die Datenbank eingeben |
320 |
|
|
11.4 Vorbereitete Anweisungen verwenden |
323 |
|
|
11.5 Andere PHP-Datenbankschnittstellen verwenden |
325 |
|
|
11.5.1 Generische Datenbankschnittstelle verwenden: PEAR MDB2 |
326 |
|
|
11.6 Weiterführende Literatur |
328 |
|
|
11.7 Ausblick |
329 |
|
|
12 Fortgeschrittene MySQL- Administration |
330 |
|
|
12.1 Das Berechtigungssystem im Detail |
330 |
|
|
12.1.1 Die Tabelle user |
332 |
|
|
12.1.2 Die Tabellen db und host |
334 |
|
|
12.1.3 Die Tabellen tables_priv, columns_priv und procs_priv |
336 |
|
|
12.1.4 Zugriffskontrolle: Wie MySQL die Grant-Tabellen verwendet |
337 |
|
|
12.1.5 Berechtigungen aktualisieren |
338 |
|
|
12.2 MySQL-Datenbank absichern |
338 |
|
|
12.2.1 MySQL aus der Sicht des Betriebssystems |
338 |
|
|
12.2.2 Passwörter |
339 |
|
|
12.2.3 Benutzerberechtigungen |
340 |
|
|
12.2.4 Webbezogene Aspekte |
340 |
|
|
12.3 Weitere Informationen zu Datenbanken ermitteln |
341 |
|
|
12.3.1 Informationen mit SHOW ermitteln |
341 |
|
|
12.3.2 Mit DESCRIBE Informationen zu Spalten ermitteln |
344 |
|
|
12.3.3 Verarbeitung von Abfragen nachvollziehen |
344 |
|
|
12.4 Datenbank optimieren |
350 |
|
|
12.4.1 Datenbankentwurf optimieren |
350 |
|
|
12.4.2 Berechtigungen |
350 |
|
|
12.4.3 Tabellen optimieren |
350 |
|
|
12.4.4 Indizes verwenden |
351 |
|
|
12.4.5 Vorgabewerte verwenden |
351 |
|
|
12.4.6 Weitere Tipps |
351 |
|
|
12.5 Eine MySQL-Datenbank sichern |
351 |
|
|
12.6 Eine MySQL-Datenbank wiederherstellen |
352 |
|
|
12.7 Replikation implementieren |
352 |
|
|
12.7.1 Master konfigurieren |
353 |
|
|
12.7.2 Erste Datenübertragung durchführen |
354 |
|
|
12.7.3 Den oder die Slaves konfigurieren |
355 |
|
|
12.8 Weiterführende Literatur |
356 |
|
|
12.9 Ausblick |
356 |
|
|
13 Fortgeschrittene MySQL- Programmierung |
358 |
|
|
13.1 Die Anweisung LOAD DATA INFILE |
358 |
|
|
13.2 Speicher-Engines |
359 |
|
|
13.3 Transaktionen |
360 |
|
|
13.3.1 Wie Transaktionen definiert sind |
360 |
|
|
13.3.2 Transaktionen mit InnoDB verwenden |
361 |
|
|
13.4 Fremdschlüssel |
363 |
|
|
13.5 Gespeicherte Prozeduren |
364 |
|
|
13.5.1 Ein einfaches Beispiel |
364 |
|
|
13.5.2 Lokale Variablen |
367 |
|
|
13.5.3 Cursor und Steuerstrukturen |
367 |
|
|
13.6 Weiterführende Literatur |
371 |
|
|
13.7 Ausblick |
371 |
|
|
Teil 3 – E-Commerce und Sicherheit |
372 |
|
|
14 Eine E-Commerce-Site betreiben |
374 |
|
|
14.1 Den Zweck der Website bestimmen |
374 |
|
|
14.2 Kategorien kommerzieller Websites |
374 |
|
|
14.2.1 Informationen über Onlinebroschüren veröffentlichen |
375 |
|
|
14.2.2 Bestellungen von Waren oder Dienstleistungen annehmen |
379 |
|
|
14.2.3 Dienstleistungen und digitale Güter anbieten |
383 |
|
|
14.2.4 Mehrwertdienste für Güter oder Dienstleistungen bereitstellen |
384 |
|
|
14.2.5 Kostenreduzierung |
385 |
|
|
14.3 Risiken und Bedrohungen verstehen |
386 |
|
|
14.3.1 Cracker |
386 |
|
|
14.3.2 Geschäftlicher Misserfolg |
387 |
|
|
14.3.3 Ausfall von Computerhardware |
387 |
|
|
14.3.4 Strom-, Kommunikations- oder Netzwerkausfälle |
388 |
|
|
14.3.5 Beträchtliche Konkurrenz |
388 |
|
|
14.3.6 Softwarefehler |
388 |
|
|
14.3.7 Staatliche Reglementierungen und Steuern |
389 |
|
|
14.3.8 Beschränkte Systemkapazitäten |
389 |
|
|
14.4 Strategieentwicklung |
390 |
|
|
14.5 Ausblick |
390 |
|
|
15 E-Commerce und Sicherheit |
392 |
|
|
15.1 Wie wichtig sind Ihre Daten? |
392 |
|
|
15.2 Sicherheitsbedrohungen |
393 |
|
|
15.2.1 Offenlegung vertraulicher Daten |
394 |
|
|
15.2.2 Datenverlust oder -zerstörung |
396 |
|
|
15.2.3 Datenmodifikation |
397 |
|
|
15.2.4 DoS-Angriffe |
398 |
|
|
15.2.5 Softwarefehler |
399 |
|
|
15.2.6 Leugnung |
401 |
|
|
15.3 Benutzerfreundlichkeit, Leistungsfähigkeit, Kosten und Sicherheit |
402 |
|
|
15.4 Sicherheitsrichtlinien erstellen |
403 |
|
|
15.5 Prinzipien der Authentifizierung |
403 |
|
|
15.6 Grundlagen der Verschlüsselung |
405 |
|
|
15.6.1 Verschlüsselung mit privatem Schlüssel |
407 |
|
|
15.6.2 Verschlüsselung mit öffentlichem Schlüssel |
408 |
|
|
15.6.3 Digitale Signaturen |
408 |
|
|
15.7 Digitale Zertifikate |
409 |
|
|
15.8 Sichere Webserver |
411 |
|
|
15.9 Audits und Protokollierung |
412 |
|
|
15.10 Firewalls |
413 |
|
|
15.11 Datensicherung |
413 |
|
|
15.11.1 Allgemeine Dateien sichern |
414 |
|
|
15.11.2 Eine MySQL-Datenbank sichern und wiederherstellen |
414 |
|
|
15.12 Physische Sicherheit |
415 |
|
|
15.13 Ausblick |
416 |
|
|
16 Sicherheit bei Webanwendungen |
418 |
|
|
16.1 Strategien für den Umgang mit Sicherheitsfragen |
418 |
|
|
16.1.1 Sicherheit ist eine Frage der Einstellung |
419 |
|
|
16.1.2 Das Gleichgewicht zwischen Nutzen und Sicherheit |
419 |
|
|
16.1.3 Sicherheit überwachen |
420 |
|
|
16.1.4 Unser Grundansatz |
420 |
|
|
16.2 Womit wir es zu tun bekommen |
421 |
|
|
16.2.1 Sensible Daten abrufen und ändern |
421 |
|
|
16.2.2 Datenverlust oder -zerstörung |
422 |
|
|
16.2.3 DoS-Angriffe |
422 |
|
|
16.2.4 Injizierung von Schadcode |
422 |
|
|
16.2.5 Geknackte Server |
423 |
|
|
16.3 Mit wem haben wir es zu tun? |
423 |
|
|
16.3.1 Cracker |
424 |
|
|
16.3.2 Ahnungslose Benutzer infizierter Computer |
424 |
|
|
16.3.3 Verstimmte Mitarbeiter |
424 |
|
|
16.3.4 Hardwarediebe |
424 |
|
|
16.3.5 Wir selbst |
425 |
|
|
16.4 Wie Sie Ihren Code absichern |
425 |
|
|
16.4.1 Benutzereingaben filtern |
425 |
|
|
16.4.2 Ausgabe mit Escape-Zeichen kennzeichnen |
430 |
|
|
16.4.3 Code organisieren |
432 |
|
|
16.4.4 Was läuft im Code ab? |
433 |
|
|
16.4.5 Dateisystemspezifische Aspekte |
434 |
|
|
16.4.6 Codestabilität und Bugs |
434 |
|
|
16.4.7 Ausführungsoperator und exec() |
435 |
|
|
16.5 Webserver und PHP absichern |
437 |
|
|
16.5.1 Software aktuell halten |
437 |
|
|
16.5.2 In der php.ini stöbern |
439 |
|
|
16.5.3 Webserverkonfiguration |
440 |
|
|
16.5.4 Webanwendungen auf kommerziellen Hosts |
441 |
|
|
16.6 Sicherheit bei Datenbankservern |
443 |
|
|
16.6.1 Benutzer und das Berechtigungssystem |
443 |
|
|
16.6.2 Daten an den Server senden |
444 |
|
|
16.6.3 Serververbindung herstellen |
445 |
|
|
16.6.4 Server ausführen |
446 |
|
|
16.7 Schutz für das Netzwerk |
446 |
|
|
16.7.1 Firewalls |
446 |
|
|
16.7.2 DMZs |
447 |
|
|
16.7.3 Auf DoS- und DDoS-Angriffe vorbereitet sein |
448 |
|
|
16.8 Sicherheit bei Computern und Betriebssystemen |
448 |
|
|
16.8.1 Betriebssystem aktuell halten |
448 |
|
|
16.8.2 Beschränken Sie sich auf das Notwendige |
449 |
|
|
16.8.3 Physische Sicherheit für den Server |
450 |
|
|
16.9 Für die Katastrophe planen |
450 |
|
|
16.10 Ausblick |
451 |
|
|
17 Authentifizierung mit PHP und MySQL implementieren |
452 |
|
|
17.1 Besucher identifizieren |
452 |
|
|
17.2 Zugriffssteuerung implementieren |
453 |
|
|
17.2.1 Passwörter speichern |
455 |
|
|
17.2.2 Passwörter verschlüsseln |
458 |
|
|
17.2.3 Mehrere Seiten absichern |
459 |
|
|
17.3 Die HTTP-Basic-Authentifizierung |
460 |
|
|
17.4 Basic-Authentifizierung mit PHP |
462 |
|
|
17.5 Basic-Authentifizierung mit .htaccess bei Apache |
464 |
|
|
17.6 Authentifizierung mit MySQL |
467 |
|
|
17.6.1 mod_auth_mysql installieren |
468 |
|
|
17.6.2 mod_auth_mysql verwenden |
468 |
|
|
17.7 Benutzerdefinierte Authentifizierung erstellen |
470 |
|
|
17.8 Weiterführende Literatur |
470 |
|
|
17.9 Ausblick |
470 |
|
|
18 Sichere Transaktionen mit PHP und MySQL implementieren |
472 |
|
|
18.1 Sichere Transaktionen realisieren |
472 |
|
|
18.1.1 Der Computer des Benutzers |
473 |
|
|
18.1.2 Das Internet |
475 |
|
|
18.1.3 Ihr System |
476 |
|
|
18.2 SSL verwenden |
477 |
|
|
18.3 Benutzereingaben überprüfen |
481 |
|
|
18.4 Daten sicher speichern |
482 |
|
|
18.5 Speicherung von Kreditkartennummern |
483 |
|
|
18.6 Verschlüsselung in PHP verwenden |
484 |
|
|
18.6.1 GPG installieren |
485 |
|
|
18.6.2 GPG testen |
488 |
|
|
18.7 Weiterführende Literatur |
493 |
|
|
18.8 Ausblick |
494 |
|
|
Teil 4 – Fortgeschrittene PHP-Techniken |
496 |
|
|
19 Interaktion mit Dateisystem und Server |
498 |
|
|
19.1 Dateien hochladen |
498 |
|
|
19.1.1 HTML-Code für den Dateiupload |
500 |
|
|
19.1.2 Der PHP-Code für den Umgang mit der Datei |
501 |
|
|
19.1.3 Häufige Probleme bei Uploads vermeiden |
506 |
|
|
19.2 Verzeichnisfunktionen verwenden |
507 |
|
|
19.2.1 Lesen von Verzeichnissen |
507 |
|
|
19.2.2 Informationen zum aktuellen Verzeichnis ermitteln |
510 |
|
|
19.2.3 Verzeichnisse anlegen und löschen |
511 |
|
|
19.3 Interaktion mit dem Dateisystem |
511 |
|
|
19.3.1 Informationen zu Dateien ermitteln |
512 |
|
|
19.3.2 Dateieigenschaften ändern |
514 |
|
|
19.3.3 Dateien anlegen, löschen und verschieben |
515 |
|
|
19.4 Funktionen zur Programmausführung |
516 |
|
|
19.5 Interaktion mit der Umgebung: getenv() und putenv() |
518 |
|
|
19.6 Weiterführende Literatur |
519 |
|
|
19.7 Ausblick |
519 |
|
|
20 Netzwerk- und Protokollfunktionen |
520 |
|
|
20.1 Verfügbare Protokolle |
520 |
|
|
20.2 E-Mails senden und empfangen |
521 |
|
|
20.3 Daten anderer Websites verwenden |
522 |
|
|
20.4 Lookup-Funktionen für Netzwerke |
525 |
|
|
20.5 Dateien sichern oder spiegeln |
529 |
|
|
20.5.1 Dateien mit FTP sichern oder spiegeln |
529 |
|
|
20.5.2 Dateien hochladen |
536 |
|
|
20.5.3 Timeouts vermeiden |
536 |
|
|
20.5.4 Weitere FTP-Funktionen |
537 |
|
|
20.6 Weiterführende Literatur |
537 |
|
|
20.7 Ausblick |
538 |
|
|
21 Datum und Uhrzeit |
540 |
|
|
21.1 Datum und Uhrzeit mit PHP abrufen |
540 |
|
|
21.1.1 Die Funktion date() verwenden |
540 |
|
|
21.1.2 Unix-Zeitstempel |
542 |
|
|
21.1.3 Die Funktion getdate() |
544 |
|
|
21.1.4 Datumswerte mit checkdate() validieren |
545 |
|
|
21.1.5 Zeitstempel formatieren |
545 |
|
|
21.2 Datumsformate zwischen PHP und MySQL konvertieren |
548 |
|
|
21.3 In PHP mit Datumswerten rechnen |
550 |
|
|
21.4 In MySQL mit Datumswerten rechnen |
551 |
|
|
21.5 Mikrosekunden |
553 |
|
|
21.6 Kalenderfunktionen |
554 |
|
|
21.7 Weiterführende Literatur |
555 |
|
|
21.8 Ausblick |
555 |
|
|
22 Bilder generieren |
556 |
|
|
22.1 Bildunterstützung in PHP |
557 |
|
|
22.2 Bildformate |
558 |
|
|
22.2.1 JPEG |
558 |
|
|
22.2.2 PNG |
558 |
|
|
22.2.3 WBMP |
559 |
|
|
22.2.4 GIF |
559 |
|
|
22.3 Bilder erstellen |
559 |
|
|
22.3.1 Ein Bild auf der Arbeitsfläche anlegen |
560 |
|
|
22.3.2 Elemente oder Text ins Bild einfügen |
561 |
|
|
22.3.3 Fertige Grafik ausgeben |
563 |
|
|
22.3.4 Bereinigung |
564 |
|
|
22.4 Automatisch generierte Bilder auf anderen Seiten benutzen |
564 |
|
|
22.5 Text und Schriftarten zur Erstellung von Bildern verwenden |
565 |
|
|
22.5.1 Basisarbeitsfläche einrichten |
568 |
|
|
22.5.2 Die Schaltfläche beschriften |
569 |
|
|
22.5.3 Text positionieren |
572 |
|
|
22.5.4 Text auf die Schaltfläche schreiben |
572 |
|
|
22.5.5 Der letzte Schliff |
573 |
|
|
22.6 Zahlen schreiben und Daten grafisch darstellen |
573 |
|
|
22.7 Andere Bildfunktionen |
581 |
|
|
22.8 Weiterführende Literatur |
581 |
|
|
22.9 Ausblick |
581 |
|
|
23 Sitzungsverwaltung mit PHP |
582 |
|
|
23.1 Was ist eine Sitzungsverwaltung? |
582 |
|
|
23.2 Grundfunktionalität einer Sitzung |
582 |
|
|
23.2.1 Was sind Cookies? |
583 |
|
|
23.2.2 Cookies mit PHP setzen |
584 |
|
|
23.2.3 Cookies mit Sitzungen nutzen |
584 |
|
|
23.2.4 Sitzungs-IDs speichern |
585 |
|
|
23.3 Implementierung einfacher Sitzungen |
585 |
|
|
23.3.1 Sitzung starten |
585 |
|
|
23.3.2 Sitzungsvariablen registrieren |
586 |
|
|
23.3.3 Sitzungsvariablen nutzen |
586 |
|
|
23.3.4 Variablen löschen und die Sitzung zerstören |
587 |
|
|
23.4 Eine einfache Beispielsitzung |
587 |
|
|
23.5 Sitzungen konfigurieren |
589 |
|
|
23.6 Authentifizierung bei Sitzungen |
590 |
|
|
23.7 Weiterführende Literatur |
597 |
|
|
23.8 Ausblick |
597 |
|
|
24 Weitere nützliche Features |
598 |
|
|
24.1 Strings mit eval() auswerten |
598 |
|
|
24.2 Ausführung anhalten: die() und exit() |
599 |
|
|
24.3 Variablen und Objekte serialisieren |
600 |
|
|
24.4 Informationen über die PHP-Umgebung einholen |
601 |
|
|
24.4.1 Welche Erweiterungen sind geladen? |
601 |
|
|
24.4.2 Scriptbesitzer ermitteln |
602 |
|
|
24.4.3 Datum der letzten Änderung eines Scripts ermitteln |
602 |
|
|
24.5 Laufzeitumgebung temporär ändern |
602 |
|
|
24.6 Quellcode hervorheben |
604 |
|
|
24.7 PHP auf der Befehlszeile |
604 |
|
|
24.8 Ausblick |
605 |
|
|
Teil 5 – PHP- und MySQL-Projekte in der Praxis |
606 |
|
|
25 PHP und MySQL in Großprojekten |
608 |
|
|
25.1 Software-Engineering für die Webentwicklung |
609 |
|
|
25.2 Ein Webanwendungsprojekt planen und durchführen |
609 |
|
|
25.3 Code wiederverwenden |
610 |
|
|
25.4 Leicht zu pflegenden Code schreiben |
611 |
|
|
25.4.1 Kodierungsstandards |
612 |
|
|
25.4.2 Code zerlegen |
615 |
|
|
25.4.3 Standardverzeichnisstruktur verwenden |
616 |
|
|
25.4.4 Eigene Funktionen dokumentieren und weitergeben |
617 |
|
|
25.5 Versionskontrolle |
617 |
|
|
25.6 Entwicklungsumgebung auswählen |
619 |
|
|
25.7 Projekte dokumentieren |
619 |
|
|
25.8 Prototyping |
620 |
|
|
25.9 Logik und Inhalt trennen |
621 |
|
|
25.10 Code optimieren |
622 |
|
|
25.10.1 Einfache Optimierungen |
622 |
|
|
25.10.2 Produkte von Zend Technologies |
623 |
|
|
25.11 Testen |
623 |
|
|
25.12 Weiterführende Literatur |
624 |
|
|
25.13 Ausblick |
625 |
|
|
26 Debugging |
626 |
|
|
26.1 Programmierfehler |
626 |
|
|
26.1.1 Syntaxfehler |
626 |
|
|
26.1.2 Laufzeitfehler |
628 |
|
|
26.1.3 Logische Fehler |
634 |
|
|
26.2 Hilfe beim Variablen-Debugging |
635 |
|
|
26.3 Stufen der Fehlerprotokollierung |
638 |
|
|
26.4 Einstellungen der Fehlerprotokollierung ändern |
639 |
|
|
26.5 Fehler selbst auslösen |
641 |
|
|
26.6 Elegante Fehlerbehandlung |
641 |
|
|
26.7 Ausblick |
644 |
|
|
27 Benutzerauthentifizierung und Personalisierung |
646 |
|
|
27.1 Die Bestandteile der Lösung |
646 |
|
|
27.1.1 Benutzeridentifikation und Personalisierung |
647 |
|
|
27.1.2 Bookmarks speichern |
648 |
|
|
27.1.3 Bookmarks empfehlen |
648 |
|
|
27.2 Der Lösungsentwurf im Überblick |
648 |
|
|
27.3 Implementierung der Datenbank |
651 |
|
|
27.4 Implementierung der Basiswebsite |
652 |
|
|
27.5 Implementierung der Benutzerauthentifizierung |
655 |
|
|
27.5.1 Benutzer registrieren |
655 |
|
|
27.5.2 Anmelden |
661 |
|
|
27.5.3 Abmelden |
664 |
|
|
27.5.4 Passwörter ändern |
665 |
|
|
27.5.5 Vergessene Passwörter zurücksetzen |
667 |
|
|
27.6 Bookmark-Speicherung und -Abruf |
672 |
|
|
27.6.1 Bookmarks hinzufügen |
672 |
|
|
27.6.2 Bookmarks anzeigen |
674 |
|
|
27.6.3 Bookmarks löschen |
675 |
|
|
27.7 Empfehlungen implementieren |
678 |
|
|
27.8 Mögliche Erweiterungen |
681 |
|
|
27.9 Ausblick |
682 |
|
|
28 Der Warenkorb |
684 |
|
|
28.1 Die Bestandteile der Lösung |
684 |
|
|
28.1.1 Erstellung eines Onlinekatalogs |
685 |
|
|
28.1.2 Benutzeraktionen während des Einkaufs überwachen |
685 |
|
|
28.1.3 Ein Zahlungssystem implementieren |
686 |
|
|
28.1.4 Die Administratorschnittstelle |
686 |
|
|
28.2 Der Lösungsentwurf im Überblick |
687 |
|
|
28.3 Implementierung der Datenbank |
690 |
|
|
28.4 Implementierung des Onlinekatalogs |
693 |
|
|
28.4.1 Kategorien auflisten |
695 |
|
|
28.4.2 Die Bücher einer Kategorie auflisten |
697 |
|
|
28.4.3 Buchdaten anzeigen |
699 |
|
|
28.5 Implementierung des Warenkorbs |
700 |
|
|
28.5.1 Das Script show_cart.php |
701 |
|
|
28.5.2 Warenkorb anzeigen |
704 |
|
|
28.5.3 Artikel in den Warenkorb legen |
706 |
|
|
28.5.4 Den aktualisierten Warenkorb speichern |
708 |
|
|
28.5.5 Zusammenfassung in der Überschriftleiste ausgeben |
709 |
|
|
28.5.6 Zur Kasse gehen |
709 |
|
|
28.6 Zahlung implementieren |
715 |
|
|
28.7 Administrationsschnittstelle implementieren |
717 |
|
|
28.8 Erweiterungen |
725 |
|
|
28.9 Vorhandene Systeme nutzen |
726 |
|
|
28.10 Ausblick |
726 |
|
|
29 Ein webbasierter E-Mail- Dienst |
728 |
|
|
29.1 Die Bestandteile der Lösung |
728 |
|
|
29.1.1 Die Protokolle POP3 und IMAP im Vergleich |
728 |
|
|
29.1.2 POP3- und IMAP-Unterstützung in PHP |
729 |
|
|
29.2 Der Lösungsentwurf im Überblick |
731 |
|
|
29.3 Einrichtung der Datenbank |
732 |
|
|
29.4 Die Scriptarchitektur |
734 |
|
|
29.5 An- und Abmeldung |
740 |
|
|
29.6 Konten einrichten |
743 |
|
|
29.6.1 Neues Konto anlegen |
745 |
|
|
29.6.2 Vorhandenes Konto ändern |
746 |
|
|
29.6.3 Konto löschen |
746 |
|
|
29.7 Mails lesen |
747 |
|
|
29.7.1 Konto auswählen |
747 |
|
|
29.7.2 Postfachinhalt anzeigen |
750 |
|
|
29.7.3 E-Mails lesen |
752 |
|
|
29.7.4 Header anzeigen |
756 |
|
|
29.7.5 Mails löschen |
756 |
|
|
29.8 Mails senden |
757 |
|
|
29.8.1 Neue Mail versenden |
757 |
|
|
29.8.2 Mail beantworten oder weiterleiten |
759 |
|
|
29.9 Erweiterungen |
761 |
|
|
29.10 Ausblick |
762 |
|
|
30 Ein Mailinglisten-Manager |
764 |
|
|
30.1 Die Bestandteile der Lösung |
764 |
|
|
30.1.1 Datenbank mit Mailinglisten und Abonnenten einrichten |
765 |
|
|
30.1.2 Newsletter hochladen |
766 |
|
|
30.1.3 Mail mit Anhang versenden |
766 |
|
|
30.2 Der Lösungsentwurf im Überblick |
767 |
|
|
30.3 Einrichtung der Datenbank |
769 |
|
|
30.4 Die Scriptarchitektur |
771 |
|
|
30.5 Implementierung der Anmeldung |
778 |
|
|
30.5.1 Neues Konto anlegen |
779 |
|
|
30.5.2 Anmelden |
781 |
|
|
30.6 Implementierung der Benutzerfunktionen |
784 |
|
|
30.6.1 Listen anzeigen lassen |
784 |
|
|
30.6.2 Mailinglisten-Informationen anzeigen |
789 |
|
|
30.6.3 Mailinglistenarchive anzeigen |
791 |
|
|
30.6.4 Abonnements bestellen und kündigen |
792 |
|
|
30.6.5 Konteneinstellungen ändern |
793 |
|
|
30.6.6 Passwörter ändern |
794 |
|
|
30.6.7 Abmelden |
796 |
|
|
30.7 Implementierung der Administrationsfunktionen |
796 |
|
|
30.7.1 Neue Mailingliste anlegen |
797 |
|
|
30.7.2 Neuen Newsletter hochladen |
799 |
|
|
30.7.3 Upload mehrerer Dateien |
802 |
|
|
30.7.4 Newslettervorschau |
806 |
|
|
30.7.5 Newsletter verschicken |
807 |
|
|
30.8 Erweiterungen |
813 |
|
|
30.9 Ausblick |
814 |
|
|
31 Erstellung von Webforen |
816 |
|
|
31.1 Die Vorgehensweise |
816 |
|
|
31.2 Die Bestandteile der Lösung |
817 |
|
|
31.3 Der Lösungsentwurf im Überblick |
818 |
|
|
31.4 Der Datenbankentwurf |
820 |
|
|
31.5 Die Baumstruktur der Beiträge anzeigen |
822 |
|
|
31.5.1 Erweitern und Reduzieren |
825 |
|
|
31.5.2 Beiträge anzeigen |
827 |
|
|
31.5.3 Die Klasse treenode |
828 |
|
|
31.6 Einzelne Beiträge anzeigen |
835 |
|
|
31.7 Neue Beiträge hinzufügen |
837 |
|
|
31.8 Erweiterungen |
843 |
|
|
31.9 Nutzung eines vorhandenen Systems |
844 |
|
|
31.10 Ausblick |
844 |
|
|
32 Personalisierte Dokumente im PDF-Format |
846 |
|
|
32.1 Projektüberblick |
846 |
|
|
32.1.1 Dokumentformate bewerten |
847 |
|
|
32.2 Die Bestandteile der Lösung |
851 |
|
|
32.2.1 Das Frage-und-Antwort-System |
852 |
|
|
32.2.2 Die Software zum Generieren von Dokumenten |
852 |
|
|
32.3 Der Lösungsentwurf im Überblick |
855 |
|
|
32.3.1 Fragen stellen |
856 |
|
|
32.3.2 Bewertung der Antworten |
858 |
|
|
32.3.3 RTF-Zertifikat generieren |
861 |
|
|
32.3.4 Ein PDF-Zertifikat aus einer Vorlage generieren |
864 |
|
|
32.3.5 PDF-Dokument mit PDFlib generieren |
868 |
|
|
32.3.6 Ein Hallo Welt-Script für PDFlib |
868 |
|
|
32.3.7 Zertifikat mit PDFlib generieren |
872 |
|
|
32.4 Header-Probleme |
880 |
|
|
32.5 Erweiterungen |
881 |
|
|
32.6 Ausblick |
881 |
|
|
33 Verbindung mit Webdiensten via XML und SOAP |
882 |
|
|
33.1 Projektüberblick: Mit XML und Webdiensten arbeiten |
882 |
|
|
33.1.1 XML |
883 |
|
|
33.1.2 Webdienste |
886 |
|
|
33.2 Die Bestandteile der Lösung |
888 |
|
|
33.2.1 Verwendung der Amazon Web Services |
889 |
|
|
33.2.2 XML parsen: REST-Antworten |
890 |
|
|
33.2.3 SOAP mit PHP verwenden |
890 |
|
|
33.2.4 Caching |
890 |
|
|
33.3 Der Lösungsentwurf im Überblick |
891 |
|
|
33.3.1 Die Kernanwendung |
895 |
|
|
33.3.2 Bücher in einer Kategorie anzeigen |
902 |
|
|
33.3.3 Die Klasse AmazonResultSet |
904 |
|
|
33.3.4 Mit REST eine Anfrage stellen und ein Ergebnis abrufen |
912 |
|
|
33.3.5 Mit SOAP eine Anfrage stellen und ein Ergebnis abrufen |
918 |
|
|
33.3.6 Daten aus einer Anfrage zwischenspeichern |
920 |
|
|
33.3.7 Warenkorb erstellen |
922 |
|
|
33.3.8 Bei Amazon zur Kasse gehen |
925 |
|
|
33.4 Installation des Projektcodes |
926 |
|
|
33.5 Erweiterungen |
927 |
|
|
33.6 Weiterführende Literatur |
927 |
|
|
34 Web 2.0-Anwendungen mit Ajax erstellen |
928 |
|
|
34.1 Was ist Ajax? |
929 |
|
|
34.1.1 HTTP-Anfragen und -Antworten |
929 |
|
|
34.1.2 DHTML und XHTML |
931 |
|
|
34.1.3 CSS |
932 |
|
|
34.1.4 Clientseitige Programmierung |
933 |
|
|
34.1.5 Serverseitige Programmierung |
933 |
|
|
34.1.6 XML und XSLT |
934 |
|
|
34.2 Grundlagen zu Ajax |
934 |
|
|
34.2.1 Das XMLHTTPRequest-Objekt |
934 |
|
|
34.2.2 Mit dem Server kommunizieren |
937 |
|
|
34.2.3 Mit der Serverantwort arbeiten |
938 |
|
|
34.2.4 Es wächst zusammen, was zusammengehört |
940 |
|
|
34.3 Ajax-Elemente zu älteren Projekten hinzufügen |
943 |
|
|
34.3.1 Ajax-Elemente in PHPbookmark ergänzen |
944 |
|
|
34.4 Weitere Informationen |
958 |
|
|
34.4.1 Mehr zum DOM erfahren |
958 |
|
|
34.4.2 JavaScript-Bibliotheken für Ajax-Anwendungen |
959 |
|
|
34.4.3 Websites für Ajax-Entwickler |
959 |
|
|
Teil 6 – Anhänge |
962 |
|
|
A Installation von PHP und MySQL |
964 |
|
|
A.5 Installation von Apache, PHP und MySQL unter Unix |
965 |
|
|
A.5.1 Installation der Binary |
965 |
|
|
A.5.2 Installation aus dem Quellcode |
966 |
|
|
A.5.3 Auszüge aus der Datei httpd.conf |
972 |
|
|
A.5.4 Funktioniert die PHP-Unterstützung? |
973 |
|
|
A.5.5 Funktioniert SSL? |
974 |
|
|
A.6 Installation von Apache, PHP und MySQL unter Windows |
975 |
|
|
A.6.1 Installation von MySQL unter Windows |
975 |
|
|
A.6.2 Installation von Apache unter Windows |
977 |
|
|
A.6.3 Installation von PHP unter Windows |
979 |
|
|
A.7 Installation von PEAR |
981 |
|
|
A.8 Weitere Konfigurationen einrichten |
983 |
|
|
B Ressourcen im Internet |
984 |
|
|
B.9 PHP-Ressourcen |
984 |
|
|
B.10 Ressourcen zu MySQL und SQL |
987 |
|
|
B.11 Ressourcen zu Apache |
987 |
|
|
B.12 Webentwicklung |
987 |
|
|
C Listings |
988 |
|