Inhaltsverzeichnis

Alle Kapitel aufklappen
Alle Kapitel zuklappen
Materialien zum Buch
23
Vorwort
25
TEIL I Vorbereitungen
31
1 Allgemeines zu PHP
33
1.1 Geschichte von PHP
33
1.2 Erfolg und Einsatz
35
1.3 Das Konzept von PHP
36
1.4 Die wichtigsten Neuerungen in PHP 8
38
1.5 Die wichtigsten Neuerungen in PHP 7.3
40
1.6 Die wichtigsten Neuerungen in PHP 7
42
1.7 Die wichtigsten Neuerungen in PHP 5.4, 5.5 und 5.6
43
1.8 Versionen und Anlaufstelle
44
2 Installation
47
2.1 PHP installieren
47
2.1.1 Aufbau von PHP
49
2.1.2 Windows
50
2.1.3 macOS
65
2.1.4 Linux
71
2.2 PEAR installieren
79
2.2.1 PEAR installieren
80
2.2.2 PEAR2
82
2.2.3 PEAR-Pakete ohne Installation
84
3 Test und Hilfe
85
3.1 Häufige Fehler
85
3.1.1 Die Seite kann nicht angezeigt werden
85
3.1.2 Die Webseite wurde nicht gefunden – File not found
87
3.1.3 Server nicht gefunden
88
3.1.4 Unable to initialize module
89
3.1.5 Modul nicht gefunden
90
3.1.6 Der Browser öffnet ein Downloadfenster
91
3.1.7 No input file specified (oder so ähnlich)
92
3.1.8 Call to undefined function
93
3.1.9 Internal Server Error
94
3.1.10 VCRUNTIME140.DLL fehlt
94
3.1.11 Weiße Seite im Browser
95
3.1.12 Extension taucht nicht in phpinfo() auf
96
3.2 Hilfsquellen
96
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
116
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«
166
5.3.3 »do-while«
173
5.4 Sprünge
174
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 Hilfreiches und Nützliches
196
6.1.9 Funktionen von PHP
199
6.2 Sprachkonstrukte
200
6.2.1 Ausgabe
202
7 Strings
209
7.1 Verbinden
209
7.2 Teilen und Zusammenfügen
210
7.2.1 Auf Zeichen zugreifen
210
7.2.2 Gleichmäßig unterbrechen
210
7.2.3 Zeilenumbrüche
212
7.2.4 Teilen in Strings
214
7.2.5 Strings und Arrays
215
7.3 Groß- und Kleinschreibung
221
7.4 Beschneiden
223
7.4.1 Zeichen ausschneiden
224
7.4.2 Whitespaces entfernen
225
7.5 Suchen und Ersetzen
225
7.5.1 Suchen
226
7.5.2 Ersetzen
230
7.6 Sonderzeichen, HTML etc.
233
7.6.1 Entwerten – für Datenbanken
233
7.6.2 Entwerten – für reguläre Ausdrücke
234
7.6.3 HTML
235
7.6.4 URLs
239
7.7 Vergleichen
241
7.7.1 Vergleichsfunktionen
241
7.7.2 Ähnlichkeiten und Unterschiede
241
7.7.3 Aussprache
242
7.8 Hilfreiches und Nützliches
243
7.8.1 ASCII und Umwandlung
243
7.8.2 Unicode-Codepoint
244
7.8.3 Verschlüsselung
244
7.8.4 Umdrehen
246
7.8.5 Multibyte-String-Funktionen
247
8 Arrays
249
8.1 Grundlagen
249
8.1.1 Arrays erstellen
249
8.1.2 Elemente hinzufügen und ändern
251
8.1.3 Elemente löschen
252
8.1.4 Assoziative Arrays
252
8.1.5 Kurzschreibweise mit JSON
253
8.1.6 Multidimensionale Arrays
253
8.2 Arrays und Schleifen
254
8.2.1 »for«
254
8.2.2 »foreach«
255
8.2.3 Funktionen zur Iteration
257
8.3 Untersuchen
260
8.4 Transformieren
261
8.4.1 Hinzufügen und Entfernen
261
8.4.2 Löschen und Ersetzen
262
8.4.3 Verbinden
264
8.4.4 Variablen und Arrays
266
8.4.5 Dereferenzierung
268
8.4.6 Umwandlung in Parameter
269
8.5 Suchen und Sortieren
269
8.5.1 Suchen
270
8.5.2 Sortieren
270
8.6 Superglobale Arrays
272
9 Mathematische und Datumsfunktionen
279
9.1 Mathe
279
9.1.1 Basics
279
9.1.2 Konstanten
281
9.1.3 Zahlen konvertieren
282
9.1.4 Zufallszahlen
284
9.1.5 Maximal, minimal und das Runden
285
9.1.6 Bogenmaß und mehr
287
9.1.7 Höhere Genauigkeit
288
9.2 Datum und Zeit
290
9.2.1 Aktuelles Datum mit Funktionen
290
9.2.2 Aktuelles Datum mit »DateTime«
295
9.2.3 Beliebige Datumswerte
297
9.2.4 Zeitstempel
298
9.2.5 Datum formatieren
302
9.2.6 Countdown – mit Daten rechnen
307
10 Reguläre Ausdrücke
311
10.1 Grundlagen
311
10.2 Funktionen für reguläre Ausdrücke
313
10.2.1 »preg_match()«
314
10.2.2 Weitere Funktionen
317
10.2.3 Ersetzungsstrings wiederverwenden
318
10.2.4 Modifikatoren für Suchmuster
319
10.3 Anwendungsbeispiele
319
10.3.1 Postleitzahlen
320
10.3.2 Telefon- und Faxnummern
321
10.3.3 Links filtern
321
11 Objektorientiert programmieren
323
11.1 Geschichte der Objektorientierung in PHP
323
11.2 Klassen und Objekte – Grundbegriffe
325
11.2.1 Klassen und Objekte in PHP
326
11.2.2 Eigenschaften
327
11.2.3 Methoden
329
11.2.4 Vererbung
334
11.3 Fortgeschrittenes
337
11.3.1 Objekte klonen
337
11.3.2 Konstruktor
338
11.3.3 Destruktor
340
11.3.4 Privat, geschützt etc.
341
11.3.5 Interfaces
347
11.3.6 Late Static Binding
349
11.3.7 Abstrakte Klassen
352
11.3.8 Anonyme Klassen
353
11.3.9 Konstanten
355
11.3.10 Überladen
356
11.3.11 Traits
361
11.4 Hilfreiches und Nützliches
364
11.4.1 Fehlerlevel
364
11.4.2 »__autoload()«
367
11.4.3 »__METHOD__«
368
11.4.4 »__toString()«
369
11.4.5 Klassentypen und »instanceof«
370
11.4.6 Objekte vergleichen
372
11.4.7 Objekte serialisieren
373
11.4.8 Objekte automatisiert auslesen
375
11.4.9 Iteration
377
11.4.10 Reflection API
379
11.4.11 SPL
381
11.4.12 Native Metadaten mit Attributen
390
12 Namespaces
395
12.1 Warum Namespaces?
396
12.2 Mit Namespaces arbeiten
397
12.2.1 Namespaces verwenden
398
12.2.2 Den aktuellen Namespace ermitteln
399
12.2.3 Namespaces per Alias
400
13 Entwurfsmuster: MVC & Co.
405
13.1 Laminas
406
13.2 MVC
408
13.3 Adapter und Factory
415
TEIL III Webtechniken
421
14 Formulare
423
14.1 Vorbereitungen
423
14.2 Formulare mit PHP
426
14.2.1 Die gute alte Zeit
427
14.2.2 Versandmethoden
430
14.2.3 Textfeld(er)
433
14.2.4 Radiobuttons
435
14.2.5 Checkboxen
436
14.2.6 Auswahllisten
438
14.2.7 Versand feststellen
442
14.3 Formularvalidierung
445
14.3.1 Textfeld(er)
445
14.3.2 Radiobuttons
447
14.3.3 Checkboxen
448
14.3.4 Auswahllisten
449
14.3.5 Detailliertere Fehlermeldung
454
14.4 Vorausfüllung
459
14.4.1 Vorbereitungen
459
14.4.2 Textfelder
460
14.4.3 Radiobuttons
462
14.4.4 Checkboxen
462
14.4.5 Auswahllisten
462
14.5 Dateiuploads
470
14.6 Anwendungsbeispiele
474
14.6.1 JavaScript-Formularprüfung
474
14.6.2 Bildergalerie
479
14.7 Einstellungen
481
15 Cookies
483
15.1 Vorbereitungen
483
15.2 Fakten und Hintergründe
485
15.2.1 Was ist ein Cookie?
486
15.2.2 Einschränkungen
486
15.2.3 Der gläserne Surfer?
487
15.3 Mit Cookies in PHP arbeiten
488
15.3.1 Cookies setzen
488
15.3.2 Cookies auslesen
496
15.3.3 Cookies löschen
499
15.3.4 »Neue« Cookies
502
15.4 Cookie-Test
504
15.5 Abschließende Überlegungen
506
16 Sessions
509
16.1 Vorbereitungen
509
16.2 Fakten, Hintergründe und Konfiguration
511
16.2.1 Daten behalten
511
16.2.2 Performance
513
16.3 Mit Sessions in PHP arbeiten
515
16.3.1 Daten schreiben
515
16.3.2 Daten auslesen
517
16.3.3 Daten löschen
518
16.3.4 Daten behalten
520
16.3.5 Sessions konfigurieren
521
16.4 Geschützter Bereich
521
16.5 Sessions in Datenbanken
524
16.6 Sicherheitsbedenken
532
16.6.1 Keine Sessions ohne Cookies!
532
16.6.2 Überprüfung des Referrers
533
16.6.3 Die Session-ID ändern
533
16.6.4 Cross-Site Request Forgery erschweren
534
16.6.5 JavaScript-Zugriff auf das Session-Cookie verhindern
534
17 E-Mail
535
17.1 Vorbereitungen
535
17.2 Mails mit PHP versenden
540
17.2.1 Standardmails
540
17.2.2 MIME-Mails
545
17.2.3 IMAP und POP
552
TEIL IV Datenbanken
555
18 SQL
557
18.1 Datenbanken und Tabellen anlegen
558
18.1.1 Primärschlüssel
558
18.1.2 Datentypen
559
18.2 Daten eintragen
561
18.3 Daten abfragen
562
18.4 Daten aktualisieren
565
18.5 Daten löschen
566
18.6 Besonderheiten
567
18.6.1 Relationales Datenbankdesign
567
18.6.2 Joins
569
18.6.3 Aggregatfunktionen
570
18.6.4 Transaktionen
571
18.6.5 Stored Procedures
573
19 PDO
575
19.1 Vorbereitungen
576
19.2 Datenbankzugriff mit PDO
578
19.2.1 Verbindungsaufbau
579
19.2.2 Abfragen
579
19.2.3 Rückgabewerte
582
19.2.4 Besonderheiten
584
19.3 Gästebuch
585
19.3.1 Tabelle anlegen
585
19.3.2 Daten eintragen
586
19.3.3 Daten ausgeben
588
19.3.4 Daten löschen
589
19.3.5 Daten bearbeiten
591
20 MySQL
595
20.1 Vorbereitungen
596
20.2 Datenbankzugriff mit MySQL
603
20.2.1 Verbindungsaufbau
603
20.2.2 Abfragen
605
20.2.3 Rückgabewerte
609
20.2.4 Besonderheiten
613
20.3 Alte MySQL-Versionen
626
20.3.1 Verbindungsaufbau
626
20.3.2 Abfragen
627
20.3.3 Rückgabewerte
628
20.4 Anwendungsbeispiel
629
20.4.1 Tabelle anlegen
630
20.4.2 Daten eintragen
630
20.4.3 Daten ausgeben
632
20.4.4 Daten löschen
634
20.4.5 Daten bearbeiten
636
20.5 Einstellungen
638
21 SQLite
641
21.1 Vorbereitungen
642
21.2 Datenbankzugriff mit SQLite
643
21.2.1 Verbindungsaufbau
643
21.2.2 Abfragen
644
21.2.3 Rückgabewerte
647
21.2.4 Besonderheiten
650
21.2.5 Migration von altem Code
654
21.3 Anwendungsbeispiel
656
21.3.1 Tabelle anlegen
656
21.3.2 Daten eintragen
656
21.3.3 Daten ausgeben
658
21.3.4 Daten löschen
659
21.3.5 Daten bearbeiten
661
22 Microsoft SQL Server
665
22.1 Vorbereitungen
666
22.2 Microsoft SQL Server Driver for PHP
667
22.2.1 Verbindungsaufbau
669
22.2.2 Abfragen
670
22.2.3 Rückgabewerte
671
22.2.4 Besonderheiten
672
22.3 Anwendungsbeispiel
677
22.3.1 Tabelle anlegen
677
22.3.2 Daten eintragen
678
22.3.3 Daten ausgeben
679
22.3.4 Daten löschen
681
22.3.5 Daten bearbeiten
682
23 Oracle
685
23.1 Vorbereitungen
685
23.2 Datenbankzugriff mit Oracle
689
23.2.1 Verbindungsaufbau
690
23.2.2 Abfragen
691
23.2.3 Rückgabewerte
693
23.2.4 Besonderheiten
696
23.3 Anwendungsbeispiel
699
23.3.1 Tabelle anlegen
699
23.3.2 Daten eintragen
700
23.3.3 Daten ausgeben
702
23.3.4 Daten löschen
702
23.3.5 Daten bearbeiten
704
24 PostgreSQL
707
24.1 Vorbereitungen
707
24.2 Datenbankzugriff mit PostgreSQL
710
24.2.1 Verbindungsaufbau
711
24.2.2 Abfragen
711
24.2.3 Rückgabewerte
714
24.2.4 Besonderheiten
716
24.3 Anwendungsbeispiel
723
24.3.1 Tabelle anlegen
723
24.3.2 Daten eintragen
723
24.3.3 Daten ausgeben
726
24.3.4 Daten löschen
727
24.3.5 Daten bearbeiten
728
24.4 Einstellungen
730
25 MongoDB
733
25.1 Vorbereitungen
733
25.2 Datenbankzugriff mit MongoDB
739
25.2.1 Verbindungsaufbau
739
25.2.2 Einfügen
740
25.2.3 Abfragen und Rückgabewerte
742
25.2.4 Aktualisieren
744
25.2.5 Löschen
745
25.3 Anwendungsbeispiel
746
25.3.1 Datenspeicher anlegen
746
25.3.2 Daten eintragen
747
25.3.3 Daten ausgeben
748
25.3.4 Daten löschen
749
25.3.5 Daten bearbeiten
751
25.4 Einstellungen
754
TEIL V Kommunikation
755
26 Dateien
757
26.1 Vorbereitungen
757
26.2 Dateihandling mit PHP
758
26.2.1 Mit Dateien arbeiten
759
26.2.2 Mit dem Dateisystem arbeiten
765
26.3 Anwendungsbeispiele
770
26.3.1 Gästebuch
770
26.3.2 Dateibrowser
775
26.4 Einstellungen
777
27 Verbindung nach außen
779
27.1 Vorbereitungen
779
27.2 Verbindung nach außen mit PHP
780
27.2.1 Streams
780
27.2.2 HTTP-Streams
782
27.2.3 PHP-Streams
787
27.2.4 Kompressions-Streams
791
27.3 Anwendungsbeispiele
794
27.3.1 Textversion von Webseiten
794
27.3.2 Onlinekomprimierer
796
28 Webservices
799
28.1 Vorbereitungen
799
28.1.1 Webservices-Grundlagen
799
28.1.2 Installation
806
28.2 nuSOAP
807
28.2.1 Server
807
28.2.2 Client
809
28.2.3 WSDL
811
28.2.4 Fazit
815
28.3 PHP-SOAP
815
28.3.1 Server
815
28.3.2 Client
816
28.3.3 WSDL
818
28.3.4 Fazit
819
28.4 REST
819
28.5 UDDI
822
29 JavaScript
825
29.1 Vorbereitungen
826
29.2 JavaScript mit PHP verbinden
826
29.2.1 PHP-Variablen mit JavaScript auslesen
827
29.2.2 JavaScript-Variablen mit PHP auslesen
830
29.3 Ajax
831
29.4 WebSockets
836
29.4.1 Server
837
29.4.2 Client
841
TEIL VI Fremdformate
843
30 XML
845
30.1 Vorbereitungen
845
30.1.1 XML-Grundlagen
845
30.1.2 Installation
851
30.2 XML-Zugriff
851
30.2.1 SAX
851
30.2.2 SimpleXML
856
30.2.3 DOM-Zugriff
860
30.2.4 Validierung
866
30.2.5 XSLT
868
30.3 XMLReader und XMLWriter
870
30.3.1 XMLReader
870
30.3.2 XMLWriter
871
30.4 EXIF
873
30.4.1 Vorbereitung
873
30.4.2 Umsetzung
873
31 Grafiken mit PHP
879
31.1 Vorbereitungen
879
31.1.1 Installation
879
31.2 GD 2 im Einsatz
880
31.2.1 Grundgerüst
880
31.2.2 Text
882
31.2.3 Formen
884
31.2.4 Linien und Stile
886
31.2.5 Ausgabe der Bilder
887
31.2.6 Bildbearbeitung
888
31.2.7 Dynamisches Diagramm
893
31.3 Die Alternativen
898
31.3.1 ImageMagick
898
31.3.2 GMagick
898
31.3.3 NetPBM
899
32 PDF mit PHP
901
32.1 Vorbereitung
902
32.1.1 TCPDF
902
32.1.2 FPDF
903
32.1.3 Haru
903
32.2 TCPDF
903
32.2.1 Grundlagen
904
32.2.2 Zellen
906
32.2.3 Linien und Punkte
908
32.2.4 Tortendiagramm
911
32.2.5 HTML schreiben
914
32.3 FPDF
915
32.3.1 Grundlagen
916
32.3.2 Zeichnen
917
32.4 Haru
918
Administration und Sicherheit
921
33 Sicherheit
923
33.1 Benutzereingaben
925
33.2 XSS
928
33.3 SQL Injection
932
33.4 Versteckte Felder?
935
33.5 Input-Filter
938
33.6 Cross-Site Request Forgery
941
33.7 Screen Scraping und CAPTCHAs
946
33.8 Passwörter verschlüsseln
951
33.9 Fazit
954
34 Authentifizierung
955
34.1 Apache-Authentifizierung
956
34.2 IIS-Authentifizierung
960
34.3 HTTP-Authentifizierung von Hand
962
34.4 Standardbasierte Authentifizierung
964
34.4.1 Vorbereitung des Google-Projekts
965
34.4.2 Zugriff per PHP
971
34.5 Fazit
976
35 Konfigurationsmöglichkeiten in der »php.ini«
979
35.1 Wo konfigurieren?
979
35.1.1 Speicherort
979
35.1.2 Andere Konfigurationsdateien
980
35.2 Was konfigurieren?
983
35.3 Fazit
990
36 Fehlersuche und Unittests
991
36.1 Debugging von Hand
993
36.2 Debugging mit DBG
995
36.3 Debugging mit Xdebug
999
36.4 Auflösung
1004
36.5 Unittests mit PHPUnit
1006
36.5.1 Unittests
1006
36.5.2 PHPUnit installieren
1006
36.5.3 Mit PHPUnit testen
1008
37 Apache-Funktionen
1013
37.1 Vorbereitungen
1013
37.2 Anwendungsbeispiele
1014
37.2.1 Informationen über Apache
1014
37.2.2 HTTP-Header auslesen
1015
37.2.3 URI-Informationen
1016
37.2.4 Andere Servertechnologien einbinden
1018
37.2.5 Apache-Prozess beenden
1019
38 Composer
1021
38.1 Composer installieren
1021
38.2 Pakete per Composer installieren
1023
38.3 Eigenen Code für Composer anpassen
1026
39 PHP-Erweiterungen
1031
39.1 Programmieren
1032
39.2 Kompilieren
1037
39.3 Testen
1041
40 Zu PHP beitragen
1045
40.1 Patches für PHP
1045
40.1.1 Bugfix
1046
40.1.2 Neues Feature
1052
40.2 Weitere Möglichkeiten
1053
Index
1055