Inhaltsverzeichnis

Alle Kapitel aufklappen
Alle Kapitel zuklappen
Materialien zum Buch
23
Vorwort
25
Teil I Vorbereitungen
33
1 Allgemeines zu PHP
35
1.1 Geschichte von PHP
35
1.2 Erfolg und Einsatz
37
1.3 Das Konzept von PHP
38
1.4 Die wichtigsten Neuerungen in PHP 8 bis 8.3
40
1.5 Die wichtigsten Neuerungen in PHP 7.3
43
1.6 Die wichtigsten Neuerungen in PHP 7
45
1.7 Die wichtigsten Neuerungen in PHP 5.4, 5.5 und 5.6
46
1.8 Versionen und Anlaufstelle
47
2 Installation
49
2.1 PHP installieren
49
2.1.1 Aufbau von PHP
51
2.1.2 Windows
52
2.1.3 macOS
67
2.1.4 Linux
73
2.2 PEAR
82
2.2.1 PEAR installieren
82
2.2.2 PEAR-Pakete ohne Installation
86
3 Test und Hilfe
87
3.1 Häufige Fehler
87
3.1.1 Die Seite kann nicht angezeigt werden
87
3.1.2 Die Webseite wurde nicht gefunden – File not found
89
3.1.3 Server nicht gefunden
89
3.1.4 Unable to initialize module
91
3.1.5 Modul nicht gefunden
91
3.1.6 Der Browser öffnet ein Downloadfenster
93
3.1.7 No input file specified (oder so ähnlich)
93
3.1.8 Call to undefined function
95
3.1.9 Internal Server Error
95
3.1.10 VCRUNTIME140.DLL fehlt
96
3.1.11 Weiße Seite im Browser
96
3.1.12 Extension taucht nicht in phpinfo() auf
97
3.2 Hilfsquellen
97
Teil II Einstieg in PHP
99
4 Grundlagen der Sprache
101
4.1 PHP in HTML
101
4.1.1 Kommentare
103
4.1.2 Anweisungen
103
4.1.3 Externe Datei
104
4.2 Ausgabe mit PHP
108
4.2.1 Anführungszeichen
109
4.3 Variablen
110
4.3.1 Datentypen
110
4.3.2 Benennung
113
4.3.3 Variable Variablen
114
4.3.4 Variablen ausgeben
114
4.3.5 Nützliches und Hilfreiches
117
4.3.6 Vordefinierte Variablen
120
4.4 Konstanten
121
5 Programmieren
123
5.1 Operatoren
123
5.1.1 Arithmetische Operatoren
123
5.1.2 Vergleichsoperatoren
127
5.1.3 Logische Operatoren
134
5.1.4 Binärzahlen und bitweise Operatoren
136
5.1.5 Operatoren, die aus der Reihe tanzen
140
5.1.6 Rangfolge der Operatoren
146
5.2 Fallunterscheidungen
147
5.2.1 »if«
148
5.2.2 »switch«
154
5.2.3 »match«
158
5.3 Schleifen
161
5.3.1 »for«
161
5.3.2 »while«
165
5.3.3 »do-while«
172
5.4 Sprünge
173
6 Funktionen und Sprachkonstrukte
175
6.1 Funktionen
175
6.1.1 Parameter
176
6.1.2 Gültigkeit von Variablen
182
6.1.3 Rückgabewert
183
6.1.4 Funktionsnamen in Variablen
186
6.1.5 Anonyme Funktionen
187
6.1.6 Rekursive Funktionen
188
6.1.7 Typdeklarationen
191
6.1.8 Enumerations
198
6.1.9 Hilfreiches und Nützliches
200
6.1.10 Funktionen von PHP
203
6.2 Sprachkonstrukte
205
6.2.1 Ausgabe
206
7 Strings
213
7.1 Verbinden
213
7.2 Teilen und Zusammenfügen
214
7.2.1 Auf Zeichen zugreifen
214
7.2.2 Gleichmäßig unterbrechen
214
7.2.3 Zeilenumbrüche
216
7.2.4 Teilen in Strings
217
7.2.5 Strings und Arrays
219
7.3 Groß- und Kleinschreibung
224
7.4 Beschneiden
227
7.4.1 Zeichen ausschneiden
227
7.4.2 Whitespaces entfernen
228
7.5 Suchen und Ersetzen
229
7.5.1 Suchen
229
7.5.2 Ersetzen
234
7.6 Sonderzeichen, HTML etc.
236
7.6.1 Entwerten – für Datenbanken
236
7.6.2 Entwerten – für reguläre Ausdrücke
238
7.6.3 HTML
238
7.6.4 URLs
243
7.7 Vergleichen
244
7.7.1 Vergleichsfunktionen
244
7.7.2 Ähnlichkeiten und Unterschiede
245
7.7.3 Aussprache
246
7.8 Hilfreiches und Nützliches
246
7.8.1 ASCII und Umwandlung
246
7.8.2 Unicode-Codepoint
247
7.8.3 Verschlüsselung
248
7.8.4 Umdrehen
249
7.8.5 Multibyte-String-Funktionen
250
8 Arrays
253
8.1 Grundlagen
253
8.1.1 Arrays erstellen
253
8.1.2 Elemente hinzufügen und ändern
255
8.1.3 Elemente löschen
256
8.1.4 Assoziative Arrays
256
8.1.5 Kurzschreibweise mit JSON
257
8.1.6 Multidimensionale Arrays
257
8.2 Arrays und Schleifen
258
8.2.1 »for«
258
8.2.2 »foreach«
259
8.2.3 Funktionen zur Iteration
262
8.3 Untersuchen
264
8.4 Transformieren
265
8.4.1 Hinzufügen und Entfernen
265
8.4.2 Löschen und Ersetzen
266
8.4.3 Verbinden
268
8.4.4 Variablen und Arrays
270
8.4.5 Dereferenzierung
272
8.4.6 Umwandlung in Parameter
273
8.5 Suchen und Sortieren
274
8.5.1 Suchen
274
8.5.2 Sortieren
275
8.6 Superglobale Arrays
276
9 Mathematische und Datumsfunktionen
283
9.1 Mathe
283
9.1.1 Basics
283
9.1.2 Konstanten
285
9.1.3 Zahlen konvertieren
286
9.1.4 Zufallszahlen
288
9.1.5 Maximal, minimal und das Runden
290
9.1.6 Bogenmaß und mehr
292
9.1.7 Höhere Genauigkeit
292
9.2 Datum und Zeit
295
9.2.1 Aktuelles Datum mit Funktionen
295
9.2.2 Aktuelles Datum mit »DateTime«
301
9.2.3 Beliebige Datumswerte
302
9.2.4 Zeitstempel
303
9.2.5 Datum formatieren
307
9.2.6 Countdown – mit Daten rechnen
312
10 Reguläre Ausdrücke
317
10.1 Grundlagen
317
10.2 Funktionen für reguläre Ausdrücke
320
10.2.1 »preg_match()«
320
10.2.2 Weitere Funktionen
323
10.2.3 Ersetzungsstrings wiederverwenden
324
10.2.4 Modifikatoren für Suchmuster
325
10.3 Anwendungsbeispiele
325
10.3.1 Postleitzahlen
326
10.3.2 Telefon- und Faxnummern
327
10.3.3 Links filtern
327
11 Objektorientiert programmieren
329
11.1 Geschichte der Objektorientierung in PHP
329
11.2 Klassen und Objekte – Grundbegriffe
331
11.2.1 Klassen und Objekte in PHP
332
11.2.2 Eigenschaften
334
11.2.3 Methoden
335
11.2.4 Vererbung
340
11.3 Fortgeschrittenes
344
11.3.1 Objekte klonen
344
11.3.2 Konstruktor
345
11.3.3 Destruktor
346
11.3.4 Privat, geschützt etc.
347
11.3.5 Interfaces
354
11.3.6 Late Static Binding
356
11.3.7 Abstrakte Klassen
359
11.3.8 Anonyme Klassen
360
11.3.9 Konstanten
362
11.3.10 Überladen
363
11.3.11 Traits
369
11.4 Hilfreiches und Nützliches
372
11.4.1 Fehlerlevel
372
11.4.2 »__autoload()«
374
11.4.3 »__METHOD__«
375
11.4.4 »__toString()«
376
11.4.5 Klassentypen und »instanceof«
377
11.4.6 Objekte vergleichen
379
11.4.7 Objekte serialisieren
380
11.4.8 Objekte automatisiert auslesen
383
11.4.9 Iteration
384
11.4.10 Reflection API
386
11.4.11 SPL
389
11.4.12 Native Metadaten mit Attributen
397
11.5 Namespaces
402
11.5.1 Warum Namespaces?
403
11.5.2 Mit Namespaces arbeiten
404
11.5.3 Namespaces verwenden
405
11.5.4 Den aktuellen Namespace ermitteln
406
11.5.5 Namespaces per Alias
407
12 Entwurfsmuster: MVC & Co.
411
12.1 Laminas
412
12.2 MVC
413
12.3 Adapter und Factory
421
Teil III Webtechniken
427
13 Formulare
429
13.1 Vorbereitungen
429
13.2 Formulare mit PHP
432
13.2.1 Die gute alte Zeit
433
13.2.2 Versandmethoden
436
13.2.3 Textfeld(er)
439
13.2.4 Radiobuttons
441
13.2.5 Checkboxen
442
13.2.6 Auswahllisten
444
13.2.7 Versand feststellen
447
13.3 Formularvalidierung
450
13.3.1 Textfeld(er)
451
13.3.2 Radiobuttons
453
13.3.3 Checkboxen
454
13.3.4 Auswahllisten
455
13.3.5 Detailliertere Fehlermeldung
460
13.4 Vorausfüllung
464
13.4.1 Vorbereitungen
465
13.4.2 Textfelder
466
13.4.3 Radiobuttons
467
13.4.4 Checkboxen
467
13.4.5 Auswahllisten
468
13.5 Dateiuploads
475
13.6 Anwendungsbeispiele
479
13.6.1 JavaScript-Formularprüfung
479
13.6.2 Bildergalerie
484
13.7 Einstellungen
486
14 Cookies
489
14.1 Vorbereitungen
489
14.2 Fakten und Hintergründe
491
14.2.1 Was ist ein Cookie?
491
14.2.2 Einschränkungen
492
14.2.3 Der gläserne Surfer?
492
14.3 Mit Cookies in PHP arbeiten
493
14.3.1 Cookies setzen
493
14.3.2 Cookies auslesen
502
14.3.3 Cookies löschen
505
14.3.4 »Neue« Cookies
507
14.4 Cookie-Test
510
14.5 Abschließende Überlegungen
512
15 Sessions
515
15.1 Vorbereitungen
515
15.2 Fakten, Hintergründe und Konfiguration
517
15.2.1 Daten behalten
517
15.2.2 Performance
519
15.3 Mit Sessions in PHP arbeiten
521
15.3.1 Daten schreiben
521
15.3.2 Daten auslesen
523
15.3.3 Daten löschen
524
15.3.4 Sessions konfigurieren
526
15.4 Geschützter Bereich
526
15.5 Sessions in Datenbanken
528
15.6 Sicherheitsbedenken
536
15.6.1 Keine Sessions ohne Cookies!
537
15.6.2 Überprüfung des Referrers
538
15.6.3 Die Session-ID ändern
538
15.6.4 Cross-Site Request Forgery erschweren
539
15.6.5 JavaScript-Zugriff auf das Session-Cookie verhindern
539
16 E-Mail
541
16.1 Vorbereitungen
541
16.2 Mails mit PHP versenden
546
16.2.1 Standardmails
546
16.2.2 MIME-Mails
551
16.2.3 IMAP und POP
558
Teil IV Datenbanken
561
17 SQL
563
17.1 Datenbanken und Tabellen anlegen
564
17.1.1 Primärschlüssel
564
17.1.2 Datentypen
565
17.2 Daten eintragen
567
17.3 Daten abfragen
568
17.4 Daten aktualisieren
572
17.5 Daten löschen
572
17.6 Besonderheiten
573
17.6.1 Relationales Datenbankdesign
573
17.6.2 Joins
575
17.6.3 Aggregatfunktionen
576
17.6.4 Transaktionen
578
17.6.5 Stored Procedures
579
18 PDO
581
18.1 Vorbereitungen
582
18.2 Datenbankzugriff mit PDO
584
18.2.1 Verbindungsaufbau
585
18.2.2 Abfragen
585
18.2.3 Rückgabewerte
588
18.2.4 Besonderheiten
590
18.3 Gästebuch
591
18.3.1 Tabelle anlegen
591
18.3.2 Daten eintragen
592
18.3.3 Daten ausgeben
593
18.3.4 Daten löschen
595
18.3.5 Daten bearbeiten
597
19 MySQL
601
19.1 Vorbereitungen
602
19.2 Datenbankzugriff mit MySQL
608
19.2.1 Verbindungsaufbau
608
19.2.2 Abfragen
610
19.2.3 Rückgabewerte
615
19.2.4 Besonderheiten
619
19.3 Anwendungsbeispiel
632
19.3.1 Tabelle anlegen
632
19.3.2 Daten eintragen
633
19.3.3 Daten ausgeben
635
19.3.4 Daten löschen
636
19.3.5 Daten bearbeiten
638
19.4 Einstellungen
640
20 SQLite
643
20.1 Vorbereitungen
644
20.2 Datenbankzugriff mit SQLite
645
20.2.1 Verbindungsaufbau
645
20.2.2 Abfragen
646
20.2.3 Rückgabewerte
650
20.2.4 Besonderheiten
652
20.2.5 Migration von altem Code
656
20.3 Anwendungsbeispiel
658
20.3.1 Tabelle anlegen
658
20.3.2 Daten eintragen
659
20.3.3 Daten ausgeben
660
20.3.4 Daten löschen
661
20.3.5 Daten bearbeiten
663
21 Microsoft SQL Server
667
21.1 Vorbereitungen
667
21.2 Microsoft SQL Server Driver for PHP
669
21.2.1 Verbindungsaufbau
671
21.2.2 Abfragen
672
21.2.3 Rückgabewerte
673
21.2.4 Besonderheiten
675
21.3 Anwendungsbeispiel
679
21.3.1 Tabelle anlegen
679
21.3.2 Daten eintragen
680
21.3.3 Daten ausgeben
681
21.3.4 Daten löschen
683
21.3.5 Daten bearbeiten
684
22 Oracle
687
22.1 Vorbereitungen
687
22.2 Datenbankzugriff mit Oracle
692
22.2.1 Verbindungsaufbau
692
22.2.2 Abfragen
693
22.2.3 Rückgabewerte
696
22.2.4 Besonderheiten
699
22.3 Anwendungsbeispiel
701
22.3.1 Tabelle anlegen
701
22.3.2 Daten eintragen
702
22.3.3 Daten ausgeben
704
22.3.4 Daten löschen
705
22.3.5 Daten bearbeiten
706
23 PostgreSQL
709
23.1 Vorbereitungen
709
23.2 Datenbankzugriff mit PostgreSQL
713
23.2.1 Verbindungsaufbau
713
23.2.2 Abfragen
714
23.2.3 Rückgabewerte
716
23.2.4 Besonderheiten
719
23.3 Anwendungsbeispiel
725
23.3.1 Tabelle anlegen
725
23.3.2 Daten eintragen
726
23.3.3 Daten ausgeben
728
23.3.4 Daten löschen
729
23.3.5 Daten bearbeiten
731
23.4 Einstellungen
733
24 MongoDB
735
24.1 Vorbereitungen
735
24.2 Datenbankzugriff mit MongoDB
741
24.2.1 Verbindungsaufbau
741
24.2.2 Einfügen
742
24.2.3 Abfragen und Rückgabewerte
744
24.2.4 Aktualisieren
746
24.2.5 Löschen
747
24.3 Anwendungsbeispiel
748
24.3.1 Datenspeicher anlegen
748
24.3.2 Daten eintragen
749
24.3.3 Daten ausgeben
750
24.3.4 Daten löschen
751
24.3.5 Daten bearbeiten
753
24.4 Einstellungen
756
Teil V Kommunikation
757
25 Dateien
759
25.1 Vorbereitungen
759
25.2 Dateihandling mit PHP
760
25.2.1 Mit Dateien arbeiten
761
25.2.2 Mit dem Dateisystem arbeiten
766
25.3 Anwendungsbeispiele
771
25.3.1 Gästebuch
771
25.3.2 Dateibrowser
776
25.4 Einstellungen
779
26 HTTP & Co: Verbindungen nach außen
781
26.1 Vorbereitungen
781
26.2 Verbindung nach außen mit PHP
782
26.2.1 Streams
782
26.2.2 HTTP-Streams
784
26.2.3 PHP-Streams
789
26.2.4 Kompressions-Streams
793
26.3 Fibers
796
26.4 Anwendungsbeispiele
797
26.4.1 Textversion von Webseiten
797
26.4.2 Onlinekomprimierer
799
27 APIs und Services
803
27.1 Vorbereitungen
803
27.1.1 Webservices-Grundlagen
803
27.1.2 Installation
810
27.2 REST
811
27.2.1 »json_validate()«
814
27.3 nuSOAP
816
27.3.1 Server
816
27.3.2 Client
818
27.3.3 WSDL
819
27.3.4 Fazit
823
27.4 PHP-SOAP
823
27.4.1 Server
824
27.4.2 Client
825
27.4.3 WSDL
826
27.4.4 Fazit
827
27.5 UDDI
828
28 JavaScript
831
28.1 Vorbereitungen
832
28.2 JavaScript mit PHP verbinden
832
28.2.1 PHP-Variablen mit JavaScript auslesen
833
28.2.2 JavaScript-Variablen mit PHP auslesen
836
28.3 Ajax
837
28.4 WebSockets
842
28.4.1 Server
843
28.4.2 Client
847
Fremdformate Fremdformate
851
29 XML
853
29.1 Vorbereitungen
853
29.1.1 XML-Grundlagen
853
29.1.2 Installation
859
29.2 XML-Zugriff
859
29.2.1 SAX
859
29.2.2 SimpleXML
864
29.2.3 DOM-Zugriff
868
29.2.4 Validierung
874
29.2.5 XSLT
876
29.3 XMLReader und XMLWriter
878
29.3.1 XMLReader
878
29.3.2 XMLWriter
879
29.4 EXIF
880
29.4.1 Vorbereitung
881
29.4.2 Umsetzung
881
30 Grafiken mit PHP
887
30.1 Vorbereitungen
887
30.1.1 Installation
887
30.2 GD 2 im Einsatz
888
30.2.1 Grundgerüst
888
30.2.2 Text
890
30.2.3 Formen
892
30.2.4 Linien und Stile
894
30.2.5 Ausgabe der Bilder
895
30.2.6 Bildbearbeitung
896
30.2.7 Dynamisches Diagramm
901
30.3 Die Alternativen
906
30.3.1 ImageMagick
906
30.3.2 GMagick
907
30.3.3 NetPBM
907
31 PDF mit PHP
909
31.1 Vorbereitung
910
31.1.1 TCPDF
910
31.1.2 FPDF
911
31.1.3 Haru
911
31.2 TCPDF
911
31.2.1 Grundlagen
912
31.2.2 Zellen
915
31.2.3 Linien und Punkte
917
31.2.4 Tortendiagramm
919
31.2.5 HTML schreiben
923
31.3 FPDF
924
31.3.1 Grundlagen
925
31.3.2 Zeichnen
926
31.4 Haru
927
Teil VII Administration und Sicherheit
929
32 Sicherheit
931
32.1 Benutzereingaben
933
32.2 XSS
935
32.3 SQL Injection
940
32.4 Versteckte Felder?
943
32.5 Input-Filter
946
32.6 Cross-Site Request Forgery
949
32.7 Screen Scraping und CAPTCHAs
954
32.8 Passwörter verschlüsseln
959
32.9 Fazit
962
33 Authentifizierung
963
33.1 Apache-Authentifizierung
964
33.2 IIS-Authentifizierung
968
33.3 HTTP-Authentifizierung von Hand
970
33.4 Standardbasierte Authentifizierung
972
33.4.1 Vorbereitung des Google-Projekts
974
33.4.2 Zugriff per PHP
979
33.5 Fazit
984
34 Konfigurationsmöglichkeiten in der »php.ini«
987
34.1 Wo konfigurieren?
987
34.1.1 Speicherort
987
34.1.2 Andere Konfigurationsdateien
988
34.2 Was konfigurieren?
991
34.3 Fazit
998
Teil VIII Beyond PHP
999
35 Fehlersuche mit Xdebug
1001
35.1 Debugging von Hand
1003
35.2 Debugging mit Xdebug
1005
35.3 Auflösung
1009
36 Unittests mit PHPUnit
1013
36.1 Unittests
1013
36.2 PHPUnit installieren
1014
36.3 Mit PHPUnit testen
1015
37 Apache-Funktionen
1019
37.1 Vorbereitungen
1019
37.2 Anwendungsbeispiele
1020
37.2.1 Informationen über Apache
1020
37.2.2 HTTP-Header auslesen
1021
37.2.3 URI-Informationen
1022
37.2.4 Andere Servertechnologien einbinden
1024
37.2.5 Apache-Prozess beenden
1025
38 Composer
1027
38.1 Composer installieren
1027
38.2 Pakete per Composer installieren
1029
38.3 Eigenen Code für Composer anpassen
1033
39 PHP-Erweiterungen
1037
39.1 Programmieren
1038
39.2 Kompilieren
1043
39.3 Testen
1047
40 Zu PHP beitragen
1051
40.1 Patches für PHP
1051
40.1.1 Bugfix
1052
40.1.2 Neues Feature
1056
40.2 Weitere Möglichkeiten
1058
Index
1061