Inhaltsverzeichnis

Alle Kapitel aufklappen
Alle Kapitel zuklappen
Vorwort
23
TEIL I Vorbereitungen
29
1 Allgemeines zu PHP
31
1.1 Geschichte von PHP
31
1.2 Erfolg und Einsatz
32
1.3 Das Konzept von PHP
34
1.4 Die wichtigsten Neuerungen in PHP 7.3
36
1.5 Die wichtigsten Neuerungen in PHP 7
37
1.6 Die wichtigsten Neuerungen in PHP 5.4, 5.5 und 5.6
38
1.7 Versionen und Anlaufstelle
40
2 Installation
41
2.1 PHP installieren
41
2.1.1 Aufbau von PHP
43
2.1.2 Windows
44
2.1.3 macOS
60
2.1.4 Linux
65
2.2 PEAR installieren
73
2.2.1 PEAR installieren
73
2.2.2 PEAR2
76
2.2.3 PEAR-Pakete ohne Installation
78
3 Test und Hilfe
79
3.1 Häufige Fehler
79
3.1.1 Die Seite kann nicht angezeigt werden
79
3.1.2 Die Webseite wurde nicht gefunden – File not found
81
3.1.3 Server nicht gefunden
82
3.1.4 Unable to initialize module
83
3.1.5 Modul nicht gefunden
84
3.1.6 Der Browser öffnet ein Downloadfenster
85
3.1.7 No input file specified (oder so ähnlich)
86
3.1.8 Call to undefined function
87
3.1.9 Internal Server Error
88
3.1.10 VCRUNTIME150.DLL fehlt
89
3.1.11 Weiße Seite im Browser
89
3.2 Hilfsquellen
90
TEIL II Einstieg in PHP
91
4 Grundlagen der Sprache
93
4.1 PHP in HTML
93
4.1.1 Kommentare
95
4.1.2 Anweisungen
95
4.1.3 Externe Datei
96
4.2 Ausgabe mit PHP
100
4.2.1 Anführungszeichen
101
4.3 Variablen
102
4.3.1 Datentypen
102
4.3.2 Benennung
105
4.3.3 Variable Variablen
106
4.3.4 Variablen ausgeben
107
4.3.5 Nützliches und Hilfreiches
109
4.3.6 Vordefinierte Variablen
113
4.4 Konstanten
114
5 Programmieren
115
5.1 Operatoren
115
5.1.1 Arithmetische Operatoren
115
5.1.2 Vergleichsoperatoren
119
5.1.3 Logische Operatoren
126
5.1.4 Binärzahlen und bitweise Operatoren
128
5.1.5 Operatoren, die aus der Reihe tanzen
132
5.1.6 Rangfolge der Operatoren
136
5.2 Fallunterscheidungen
137
5.2.1 »if«
138
5.2.2 »switch«
144
5.3 Schleifen
148
5.3.1 »for«
149
5.3.2 »while«
154
5.3.3 »do-while«
160
5.4 Sprünge
161
6 Funktionen und Sprachkonstrukte
163
6.1 Funktionen
163
6.1.1 Parameter
164
6.1.2 Gültigkeit von Variablen
168
6.1.3 Rückgabewert
170
6.1.4 Funktionsnamen in Variablen
172
6.1.5 Anonyme Funktionen
173
6.1.6 Rekursive Funktionen
175
6.1.7 Typdeklarationen
178
6.1.8 Hilfreiches und Nützliches
181
6.1.9 Funktionen von PHP
183
6.2 Sprachkonstrukte
185
6.2.1 Ausgabe
187
7 Strings
195
7.1 Verbinden
195
7.2 Teilen und Zusammenfügen
196
7.2.1 Auf Zeichen zugreifen
196
7.2.2 Gleichmäßig unterbrechen
196
7.2.3 Zeilenumbrüche
198
7.2.4 Teilen in Strings
200
7.2.5 Strings und Arrays
201
7.3 Groß- und Kleinschreibung
206
7.4 Beschneiden
209
7.4.1 Zeichen ausschneiden
210
7.4.2 Whitespaces entfernen
211
7.5 Suchen und Ersetzen
211
7.5.1 Suchen
212
7.5.2 Ersetzen
215
7.6 Sonderzeichen, HTML etc.
218
7.6.1 Entwerten – für Datenbanken
218
7.6.2 Entwerten – für reguläre Ausdrücke
219
7.6.3 HTML
220
7.6.4 URLs
224
7.7 Vergleichen
226
7.7.1 Vergleichsfunktionen
226
7.7.2 Ähnlichkeiten und Unterschiede
227
7.7.3 Aussprache
227
7.8 Hilfreiches und Nützliches
228
7.8.1 ASCII und Umwandlung
228
7.8.2 Unicode-Codepoint
229
7.8.3 Verschlüsselung
230
7.8.4 Umdrehen
231
7.8.5 Multibyte-Stringfunktionen
232
8 Arrays
235
8.1 Grundlagen
235
8.1.1 Arrays erstellen
235
8.1.2 Elemente hinzufügen und ändern
237
8.1.3 Elemente löschen
238
8.1.4 Assoziative Arrays
238
8.1.5 Kurzschreibweise mit JSON
239
8.1.6 Multidimensionale Arrays
239
8.2 Arrays und Schleifen
240
8.2.1 »for«
240
8.2.2 »foreach«
241
8.2.3 Funktionen zur Iteration
244
8.3 Untersuchen
246
8.4 Transformieren
247
8.4.1 Hinzufügen und Entfernen
247
8.4.2 Löschen und Ersetzen
248
8.4.3 Verbinden
250
8.4.4 Variablen und Arrays
252
8.4.5 Dereferenzierung
254
8.4.6 Umwandlung in Parameter
255
8.5 Suchen und Sortieren
256
8.5.1 Suchen
256
8.5.2 Sortieren
257
8.6 Superglobale Arrays
258
9 Mathematische und Datumsfunktionen
265
9.1 Mathe
265
9.1.1 Basics
265
9.1.2 Konstanten
267
9.1.3 Zahlen konvertieren
268
9.1.4 Zufallszahlen
270
9.1.5 Maximal, minimal und das Runden
271
9.1.6 Bogenmaß und mehr
273
9.1.7 Höhere Genauigkeit
274
9.2 Datum und Zeit
276
9.2.1 Aktuelles Datum mit Funktionen
276
9.2.2 Aktuelles Datum mit »DateTime«
281
9.2.3 Beliebige Datumswerte
283
9.2.4 Zeitstempel
284
9.2.5 Datum formatieren
288
9.2.6 Countdown – mit Daten rechnen
293
10 Reguläre Ausdrücke
297
10.1 Grundlagen
297
10.2 Funktionen für reguläre Ausdrücke
299
10.2.1 »preg_match()«
300
10.2.2 Weitere Funktionen
303
10.2.3 Ersetzungsstrings wiederverwenden
304
10.2.4 Modifikatoren für Suchmuster
305
10.3 Anwendungsbeispiele
305
10.3.1 Postleitzahlen
306
10.3.2 Telefon- und Faxnummern
307
10.3.3 Links filtern
307
11 Objektorientiert programmieren
309
11.1 Geschichte der Objektorientierung in PHP
309
11.2 Klassen und Objekte – Grundbegriffe
310
11.2.1 Klassen und Objekte in PHP
311
11.2.2 Eigenschaften
313
11.2.3 Methoden
314
11.2.4 Vererbung
319
11.3 Fortgeschrittenes
322
11.3.1 Objekte klonen
323
11.3.2 Konstruktor
324
11.3.3 Destruktor
324
11.3.4 Privat, geschützt etc.
325
11.3.5 Interfaces
331
11.3.6 Late Static Binding
333
11.3.7 Abstrakte Klassen
335
11.3.8 Anonyme Klassen
336
11.3.9 Konstanten
338
11.3.10 Überladen
339
11.3.11 Traits
344
11.4 Hilfreiches und Nützliches
347
11.4.1 Fehlerlevel
348
11.4.2 »__autoload()«
350
11.4.3 »__METHOD__«
351
11.4.4 »__toString()«
352
11.4.5 Klassentypen und »instanceof«
353
11.4.6 Objekte vergleichen
355
11.4.7 Objekte serialisieren
356
11.4.8 Objekte automatisiert auslesen
359
11.4.9 Iteration
360
11.4.10 Reflection API
362
11.4.11 SPL
365
12 Namespaces
375
12.1 Warum Namespaces?
376
12.2 Mit Namespaces arbeiten
377
12.2.1 Namespaces verwenden
378
12.2.2 Den aktuellen Namespace ermitteln
379
12.2.3 Namespaces per Alias
380
13 Entwurfsmuster: MVC & Co.
385
13.1 Zend Framework
386
13.2 MVC/MPS
388
13.3 Singleton/Einzelstück
393
13.4 Factory/Fabrik
395
TEIL III Webtechniken
397
14 Formulare
399
14.1 Vorbereitungen
399
14.2 Formulare mit PHP
402
14.2.1 Die gute alte Zeit
403
14.2.2 Versandmethoden
406
14.2.3 Textfeld(er)
409
14.2.4 Radiobuttons
411
14.2.5 Checkboxen
412
14.2.6 Auswahllisten
414
14.2.7 Versand feststellen
418
14.3 Formularvalidierung
421
14.3.1 Textfeld(er)
421
14.3.2 Radiobuttons
423
14.3.3 Checkboxen
424
14.3.4 Auswahllisten
425
14.3.5 Detailliertere Fehlermeldung
430
14.4 Vorausfüllung
435
14.4.1 Vorbereitungen
435
14.4.2 Textfelder
436
14.4.3 Radiobuttons
437
14.4.4 Checkboxen
438
14.4.5 Auswahllisten
438
14.5 Dateiuploads
446
14.6 Anwendungsbeispiele
449
14.6.1 JavaScript-Formularprüfung
449
14.6.2 Bildergalerie
454
14.7 Einstellungen
457
15 Cookies
459
15.1 Vorbereitungen
459
15.2 Fakten und Hintergründe
461
15.2.1 Was ist ein Cookie?
461
15.2.2 Einschränkungen
462
15.2.3 Der gläserne Surfer?
463
15.3 Mit Cookies in PHP arbeiten
464
15.3.1 Cookies setzen
464
15.3.2 Cookies auslesen
470
15.3.3 Cookies löschen
473
15.3.4 »Neue« Cookies
476
15.4 Cookie-Test
478
15.5 Abschließende Überlegungen
480
16 Sessions
483
16.1 Vorbereitungen
483
16.2 Fakten, Hintergründe und Konfiguration
484
16.2.1 Daten behalten
485
16.2.2 Performance
487
16.3 Mit Sessions in PHP arbeiten
488
16.3.1 Daten schreiben
489
16.3.2 Daten auslesen
491
16.3.3 Daten löschen
492
16.3.4 Daten behalten
494
16.3.5 Sessions konfigurieren
495
16.4 Geschützter Bereich
495
16.5 Sessions in Datenbanken
498
16.6 Sicherheitsbedenken
506
16.6.1 Keine Sessions ohne Cookies!
506
16.6.2 Überprüfung des Referrers
507
16.6.3 Die Session-ID ändern
507
16.6.4 JavaScript-Zugriff auf das Session-Cookie verhindern
508
17 E-Mail
509
17.1 Vorbereitungen
509
17.2 Mails mit PHP versenden
514
17.2.1 Standardmails
514
17.2.2 MIME-Mails
519
17.2.3 IMAP und POP
526
TEIL IV Datenbanken
529
18 SQL
531
18.1 Datenbanken und Tabellen anlegen
532
18.1.1 Primärschlüssel
532
18.1.2 Datentypen
533
18.2 Daten eintragen
535
18.3 Daten abfragen
536
18.4 Daten aktualisieren
540
18.5 Daten löschen
540
18.6 Besonderheiten
541
18.6.1 Relationales Datenbankdesign
541
18.6.2 Joins
543
18.6.3 Aggregatfunktionen
544
18.6.4 Transaktionen
545
18.6.5 Stored Procedures
547
19 PDO
549
19.1 Vorbereitungen
550
19.2 Datenbankzugriff mit PDO
552
19.2.1 Verbindungsaufbau
552
19.2.2 Abfragen
553
19.2.3 Rückgabewerte
556
19.2.4 Besonderheiten
558
19.3 Gästebuch
559
19.3.1 Tabelle anlegen
559
19.3.2 Daten eintragen
560
19.3.3 Daten ausgeben
561
19.3.4 Daten löschen
563
19.3.5 Daten bearbeiten
565
20 MySQL
569
20.1 Vorbereitungen
570
20.2 Datenbankzugriff mit MySQL
577
20.2.1 Verbindungsaufbau
577
20.2.2 Abfragen
579
20.2.3 Rückgabewerte
583
20.2.4 Besonderheiten
588
20.3 Alte MySQL-Versionen
601
20.3.1 Verbindungsaufbau
601
20.3.2 Abfragen
602
20.3.3 Rückgabewerte
603
20.4 Anwendungsbeispiel
604
20.4.1 Tabelle anlegen
604
20.4.2 Daten eintragen
605
20.4.3 Daten ausgeben
607
20.4.4 Daten löschen
608
20.4.5 Daten bearbeiten
610
20.5 Einstellungen
613
21 SQLite
615
21.1 Vorbereitungen
616
21.2 Datenbankzugriff mit SQLite
617
21.2.1 Verbindungsaufbau
617
21.2.2 Abfragen
618
21.2.3 Rückgabewerte
622
21.2.4 Besonderheiten
625
21.2.5 Migration von altem Code
628
21.3 Anwendungsbeispiel
630
21.3.1 Tabelle anlegen
630
21.3.2 Daten eintragen
631
21.3.3 Daten ausgeben
632
21.3.4 Daten löschen
634
21.3.5 Daten bearbeiten
635
22 Microsoft SQL Server
639
22.1 Vorbereitungen
639
22.2 Microsoft SQL Server Driver for PHP
641
22.2.1 Verbindungsaufbau
643
22.2.2 Abfragen
644
22.2.3 Rückgabewerte
645
22.2.4 Besonderheiten
646
22.3 Anwendungsbeispiel
651
22.3.1 Tabelle anlegen
651
22.3.2 Daten eintragen
651
22.3.3 Daten ausgeben
653
22.3.4 Daten löschen
654
22.3.5 Daten bearbeiten
656
23 Oracle
659
23.1 Vorbereitungen
659
23.2 Datenbankzugriff mit Oracle
664
23.2.1 Verbindungsaufbau
664
23.2.2 Abfragen
665
23.2.3 Rückgabewerte
668
23.2.4 Besonderheiten
671
23.3 Anwendungsbeispiel
673
23.3.1 Tabelle anlegen
673
23.3.2 Daten eintragen
674
23.3.3 Daten ausgeben
676
23.3.4 Daten löschen
677
23.3.5 Daten bearbeiten
678
24 PostgreSQL
681
24.1 Vorbereitungen
681
24.2 Datenbankzugriff mit PostgreSQL
685
24.2.1 Verbindungsaufbau
685
24.2.2 Abfragen
686
24.2.3 Rückgabewerte
688
24.2.4 Besonderheiten
691
24.3 Anwendungsbeispiel
697
24.3.1 Tabelle anlegen
697
24.3.2 Daten eintragen
698
24.3.3 Daten ausgeben
700
24.3.4 Daten löschen
701
24.3.5 Daten bearbeiten
703
24.4 Einstellungen
705
25 MongoDB
707
25.1 Vorbereitungen
707
25.2 Datenbankzugriff mit MongoDB
712
25.2.1 Verbindungsaufbau
713
25.2.2 Einfügen
714
25.2.3 Abfragen und Rückgabewerte
716
25.2.4 Aktualisieren
718
25.2.5 Löschen
719
25.3 Anwendungsbeispiel
719
25.3.1 Datenspeicher anlegen
720
25.3.2 Daten eintragen
720
25.3.3 Daten ausgeben
722
25.3.4 Daten löschen
723
25.3.5 Daten bearbeiten
724
25.4 Einstellungen
727
TEIL V Kommunikation
729
26 Dateien
731
26.1 Vorbereitungen
731
26.2 Dateihandling mit PHP
732
26.2.1 Mit Dateien arbeiten
733
26.2.2 Mit dem Dateisystem arbeiten
738
26.3 Anwendungsbeispiele
743
26.3.1 Gästebuch
743
26.3.2 Dateibrowser
748
26.4 Einstellungen
751
27 Verbindung nach außen
753
27.1 Vorbereitungen
753
27.2 Verbindung nach außen mit PHP
754
27.2.1 Streams
754
27.2.2 HTTP-Streams
756
27.2.3 PHP-Streams
761
27.2.4 Kompressions-Streams
765
27.3 Anwendungsbeispiele
768
27.3.1 Textversion von Webseiten
768
27.3.2 Onlinekomprimierer
770
28 Webservices
773
28.1 Vorbereitungen
773
28.1.1 Webservices-Grundlagen
773
28.1.2 Installation
780
28.2 nuSOAP
781
28.2.1 Server
781
28.2.2 Client
783
28.2.3 WSDL
785
28.2.4 Fazit
789
28.3 PHP-SOAP
789
28.3.1 Server
789
28.3.2 Client
790
28.3.3 WSDL
792
28.3.4 Fazit
793
28.4 REST
793
28.5 UDDI
796
29 JavaScript
799
29.1 Vorbereitungen
800
29.2 JavaScript mit PHP verbinden
800
29.2.1 PHP-Variablen mit JavaScript auslesen
801
29.2.2 JavaScript-Variablen mit PHP auslesen
804
29.3 Ajax
805
29.4 WebSockets
810
29.4.1 Server
811
29.4.2 Client
815
TEIL VI Fremdformate
817
30 XML
819
30.1 Vorbereitungen
819
30.1.1 XML-Grundlagen
819
30.1.2 Installation
825
30.2 XML-Zugriff
825
30.2.1 SAX
825
30.2.2 SimpleXML
830
30.2.3 DOM-Zugriff
834
30.2.4 Validierung
840
30.2.5 XSLT
842
30.3 XMLReader und XMLWriter
844
30.3.1 XMLReader
844
30.3.2 XMLWriter
845
30.4 EXIF
847
30.4.1 Vorbereitung
847
30.4.2 Umsetzung
847
31 Grafiken mit PHP
853
31.1 Vorbereitungen
853
31.1.1 Installation
853
31.2 GD 2 im Einsatz
854
31.2.1 Grundgerüst
854
31.2.2 Text
856
31.2.3 Formen
858
31.2.4 Linien und Stile
861
31.2.5 Ausgabe der Bilder
862
31.2.6 Bildbearbeitung
862
31.2.7 Dynamisches Diagramm
867
31.3 Die Alternativen
873
31.3.1 ImageMagick
873
31.3.2 GMagick
873
31.3.3 NetPBM
874
32 PDF mit PHP
875
32.1 Vorbereitung
876
32.1.1 TCPDF
876
32.1.2 FPDF
877
32.1.3 Haru
877
32.2 TCPDF
877
32.2.1 Grundlagen
878
32.2.2 Zellen
881
32.2.3 Linien und Punkte
883
32.2.4 Tortendiagramm
885
32.2.5 HTML schreiben
889
32.3 FPDF
890
32.3.1 Grundlagen
891
32.3.2 Zeichnen
892
32.4 Haru
893
TEIL VII Administration und Sicherheit
895
33 Sicherheit
897
33.1 Benutzereingaben
899
33.2 XSS
902
33.3 SQL Injection
906
33.4 Versteckte Felder?
909
33.5 Input-Filter
912
33.6 Cross-Site Request Forgery
915
33.7 Screen Scraping und CAPTCHAs
920
33.8 Passwörter verschlüsseln
925
33.9 Fazit
928
34 Authentifizierung
929
34.1 Apache-Authentifizierung
930
34.2 IIS-Authentifizierung
934
34.3 HTTP-Authentifizierung von Hand
935
34.4 Fazit
938
35 Konfigurationsmöglichkeiten in der »php.ini«
941
35.1 Wo konfigurieren?
941
35.1.1 Speicherort
941
35.1.2 Andere Konfigurationsdateien
942
35.2 Was konfigurieren?
944
35.3 Fazit
952
36 Fehlersuche und Unittests
953
36.1 Debugging von Hand
955
36.2 Debugging mit DBG
957
36.3 Debugging mit Xdebug
961
36.4 Auflösung
966
36.5 Unittests mit PHPUnit
968
36.5.1 Unittests
968
36.5.2 PHPUnit installieren
968
36.5.3 Mit PHPUnit testen
970
37 Apache-Funktionen
975
37.1 Vorbereitungen
975
37.2 Anwendungsbeispiele
976
37.2.1 Informationen über Apache
976
37.2.2 HTTP-Header auslesen
977
37.2.3 URI-Informationen
978
37.2.4 Andere Servertechnologien einbinden
980
37.2.5 Apache-Prozess beenden
981
38 Composer
983
38.1 Composer installieren
983
38.2 Pakete per Composer installieren
986
38.3 Eigenen Code für Composer anpassen
989
39 PHP-Erweiterungen
993
39.1 Programmieren
994
39.2 Kompilieren
1000
39.3 Testen
1004
40 Zu PHP beitragen
1007
40.1 Patches für PHP
1007
40.1.1 Bugfix
1008
40.1.2 Neues Feature
1014
40.2 Weitere Möglichkeiten
1015
Index
1017