Florence Maurice (https://www.maurice-web.de) gibt Trainings, Inhouseschulungen und individuelle Coachings zu Webthemen, setzt eigene Webprojekte um und schreibt regelmäßig Artikel in Fachzeitschriften. Sie ist Autorin mehrerer Fachbücher zu CSS, PHP und MySQL sowie mobilem Webdesign.

Zu diesem Buch – sowie zu vielen weiteren dpunkt.büchern – können Sie auch das entsprechende E-Book im PDF-Format herunterladen. Werden Sie dazu einfach Mitglied bei dpunkt.plus+:

www.dpunkt.plus

Florence Maurice

PHP 7 und MySQL

Ihr praktischer Einstieg in die Programmierung dynamischer Websites

5., aktualisierte und erweiterte Auflage

Florence Maurice

Lektorat: René Schönfeldt

Bibliografische Information der Deutschen Nationalbibliothek

ISBN:

5., aktualisierte und erweiterte Auflage 2019

Die vorliegende Publikation ist urheberrechtlich geschützt. Alle Rechte vorbehalten. Die Verwendung der Texte und Abbildungen, auch auszugsweise, ist ohne die schriftliche Zustimmung des Verlags urheberrechtswidrig und daher strafbar. Dies gilt insbesondere für die Vervielfältigung, Übersetzung oder die Verwendung in elektronischen Systemen.

5 4 3 2 1 0

Vorwort

PHP ist eine äußerst beliebte Skriptsprache zur serverseitigen Programmierung. Statistiken gehen davon aus, dass PHP auf mehr als 80 % der Webseiten genutzt wird, bei denen die serverseitige Sprache erkannt wird.1

Mit PHP können sogenannte dynamische Seiten erstellt werden. Das sind Seiten, die jedes Mal, wenn sie aufgerufen werden, neu, das heißt meist mit aktuellen Daten, erzeugt werden. Besonders beliebt ist PHP in der Kombination mit dem Datenbanksystem MySQL/MariaDB, da beide kostenlos zur Verfügung stehen. Mit PHP können Blogs, Content-Management-Systeme, Shopsysteme, Foren, Bildergalerien usw. programmiert werden. Die Abkürzung PHP selbst steht für PHP Hypertext Preprocessor.

PHP hat viele Vorteile:

Sie sehen, es sprechen viele Gründe dafür, PHP zu lernen.

Das sollten Sie schon können

Welche Vorkenntnisse brauchen Sie, wenn Sie PHP lernen möchten? Mit PHP erstellen Sie dynamisch HTML-Seiten, die dann an den Browser ausgeliefert werden (Genaueres dazu in Kap. 1). Deswegen sollten Sie über grundlegende HTML-Kenntnisse verfügen. Einen Crashkurs dazu gibt Ihnen Kapitel 3, aber falls Sie noch keine HTML-Seite erstellt haben, sollten Sie für die Einarbeitung in HTML zusätzliche Zeit einplanen und sich noch mit einem speziellen HTML-Buch eindecken.

Und grundsätzlich sollten Sie natürlich Lust haben, sich in die Welt der Programmierung hineinzudenken.

Vorweg: Das behandelt das Buch

Um dynamische Webseiten zu erstellen, bei denen die Inhalte aus einer Datenbank stammen, brauchen Sie PHP für die Programmierung und MySQL/MariaDB für die Datenbankoperationen. Wie das alles funktioniert, lernen Sie in diesem Buch.

Der Schwerpunkt des Buchs liegt dabei auf der Programmierung mit PHP – Sie lernen alle wichtigen Techniken im Zusammenhang mit PHP kennen – von den Basics der Sprache über nützliche Funktionen bis zur Verarbeitung von Formularen und der Arbeit mit Sessions und Cookies. Das sind wichtige Techniken gerade auch im Zusammenhang mit MySQL: So können beispielsweise die in ein Formular eingetragenen Daten mit PHP entgegengenommen und in einer MySQL-Datenbank gespeichert werden. Auch weiterführende Techniken sind ein wichtiges Thema des Buchs: Sie finden einen Einstieg in die objektorientierte Programmierung, erfahren, wie Sie mit PHP Dateien bearbeiten, PDFs erstellen und Bilder erzeugen. Außerdem befassen wir uns mit einem PHP-Framework (Laravel), und Sie sehen, wie Sie jQuery nutzen, um Daten per Ajax zu versenden.

Das Buch, das Sie in den Händen halten, ist die fünfte vollständig überarbeitete und aktualisierte Fassung meines ursprünglich bei Addison-Wesley erschienen Buchs. Behandelt werden alle neuen Features von PHP 7 – inklusive PHP 7.3, wie etwa Spaceship- und Null coalescing-Operator, skalare Typdefinitionen, Fehlerbehandlung mit der Error-Klasse, Änderungen bei der HereDoc-Syntax und vieles mehr. Ergänzt wurde außerdem ein Unterkapitel zur Verwendung der DateTime-Klasse, ein weiteres führt in PDO für den Datenbankzugriff ein, und immer wieder kommen wir auch auf Composer zu sprechen, der sich als Standardtool zur Installation von PHP-Erweiterungen etabliert hat.

PHP-Versionen im Blick

Regelmäßig erscheinen neue Versionen von PHP, so wie es etwa auch bei Microsoft Office immer wieder aktualisierte Versionen gibt. Die Änderungen bei neuen Office-Versionen sind oft weitreichend; es kann sein, dass sich einzelne Menüpunkte nun an einer ganz anderen Stelle befinden. So etwas kann Ihnen mit PHP nicht passieren, denn die grundlegenden Dinge verändern sich bei kleineren Versionssprüngen nicht. Es kommen aber natürlich einzelne neue Features hinzu, andere Features werden vielleicht als unerwünscht gekennzeichnet, was ein Hinweis ist, dass man sie nicht mehr verwenden sollte, weil sie in einer späteren Version eventuell entfernt werden.

Im Buch erfahren Sie das Wichtigste der aktuellen Version; wenn ein Feature erst vor ein paar Versionen hinzugekommen ist, wird das eigens vermerkt. Das ist eine wichtige Information, denn die klassischen Hostingangebote aktualisieren oft nicht direkt auf die neueste Version. Es kann Ihnen durchaus passieren, dass bei Ihrem Hoster noch eine ältere PHP-Version installiert ist. Deswegen kann es sinnvoll sein, nicht direkt die neuesten Features einer neuen Version zu nutzen – aber es ist wichtig zu wissen, wohin der Trend geht, um beispielsweise schon vorab auf den Einsatz von als veraltet gekennzeichneten Features zu verzichten.

Ausführliche Übersicht über die Kapitel

In Kapitel 1 geht es erst einmal um die Grundlagen von PHP – Sie erfahren, was der Unterschied zwischen statischen HTML-Seiten und dynamisch per PHP erzeugten Seiten ist. Kapitel 2 zeigt Ihnen, wie Sie auf Ihrem Computer eine Entwicklungsumgebung installieren. Außerdem sehen Sie am Beispiel, wie Sie PHP konfigurieren. Kapitel 3 vermittelt Ihnen im Schnelldurchlauf die wichtigsten HTML-/CSS-Basics.

In diesem wie auch in den meisten anderen Kapiteln finden Sie immer kleine Übungen, um das Gelesene selbst auszuprobieren und zu testen. Die Lösungen dazu stehen im Anhang und bei den Listings zu diesem Buch.

In Kapitel 4 geht es um die Sprachelemente von PHP: Sie erfahren, wie Sie PHP in HTML-Dateien einbetten und welche Datentypen und Operatoren es gibt. Ebenfalls befassen wir uns damit, wie Sie immer wieder vorkommende Bestandteile von Webseiten zentral erstellen und mit PHP einfügen können – eine sehr nützliche Technik. Außerdem lernen Sie Arrays kennen, und zwar anhand eines Beispiels, bei dem zufällig eines von mehreren Bildern angezeigt wird. Kapitel 5 führt weitere wichtige Sprachelemente ein – Sie erfahren, wie man Programme mit Bedingungen und Schleifen flexibel gestaltet und Funktionen erstellen kann. In Kapitel 6 sehen Sie wichtige fertige Funktionen, die Ihnen PHP zur Verfügung stellt: Mit diesen lassen sich Texte auf jede erdenkliche Art bearbeiten oder Arrays manipulieren. Einige Funktionen sind auch speziell für die Arbeit mit Datum und Uhrzeit gedacht, und dank der DateTime-Klasse können Sie auch mit Zeitzonen arbeiten oder wiederkehrende Termine handeln.

Möchten Sie mit Ihren Benutzern kommunizieren, bieten sich dafür Formulare an. Kapitel 7 vermittelt Ihnen die wichtigsten Techniken zu Formularen, und Sie erfahren auch, wie – und warum – Sie diese absichern müssen. Außerdem sehen Sie, wie Sie mit PHP Mails versenden, und erfahren am Beispiel, wie sich ein Bild-Upload per Formular realisieren lässt.

Cookies und Sessions sind eine weitere zentrale Webtechnologie: Mit Cookies und Sessions können Sie Zustände speichern, was Sie beispielsweise brauchen, um Warenkörbe zu realisieren. Den Details zu Cookies und Sessions widmet sich Kapitel 8; außerdem erhalten Sie einen Einblick in die Erzeugung von Passwort-Hashs mit der von PHP dafür bereitgestellten API.

Durch die objektorientierte Programmierung lassen sich Programme besser warten und einzelne Komponenten leichter wiederverwenden. Kapitel 9 widmet sich detailliert der Objektorientierung und zeigt auch fortgeschrittene Möglichkeiten auf, wie Namespaces, Traits sowie Alternativen zu der in PHP 7.3 als veraltet gekennzeichneten __autoload()-Funktion.

Wenn Sie mit umfangreichen Datenmengen arbeiten, diese verändern und auslesen möchten, so empfiehlt sich der Einsatz einer Datenbank. Kapitel 10 liefert Ihnen die wichtigsten MySQL-/MariaDB-Grundlagen. Sie werden mit php-MyAdmin vertraut gemacht und lernen zudem, die wichtigsten MySQL-Befehle selbst zu schreiben. Das brauchen Sie dann in Kapitel 11, wenn es darum geht, per PHP auf MySQL-Datenbanken zuzugreifen. Hierfür lernen Sie zwei APIs kennen: MySQLi und PDO.

Nicht immer sind die Daten, die man bearbeiten möchte, in einer Datenbank gespeichert, manchmal liegen sie auch in Textdateien vor. Kapitel 12 zeigt Ihnen, wie sich Sie Inhalte aus Textdateien auslesen und per PHP in Textdateien schreiben können. Im Weiteren sehen Sie, wie Sie einfach über die Schnittstelle simpleXML auf XML-Dateien zugreifen können, um beispielsweise Newsfeeds von anderen Seiten in Ihre Seite zu integrieren. Zudem befassen wir uns mit Phar-Archiven und der Erzeugung von PDF-Dateien.

PHP kann mehr, als Texte zu bearbeiten – Sie können mit PHP auch dynamisch Grafiken erzeugen oder vorhandene Bilder bearbeiten. Wie das geht, sehen Sie in Kapitel 13 anhand von zwei Beispielen: Sie erfahren, wie Sie automatisch kleine Vorschaubilder von größeren Bildern erstellen lassen und wie Sie Diagramme dynamisch realisieren.

Die letzten beiden Kapitel gehen etwas über PHP hinaus: Kapitel 14 demonstriert, wie man mit dem äußerst attraktiven PHP-Framework Laravel arbeitet. Schließlich zeigt Kapitel 15, wie die beliebte JavaScript-Bibliothek jQuery funktioniert und wie jQuery und PHP zusammenarbeiten – Sie sehen, wie Sie Formulardaten mit Ajax versenden.

Den Abschluss bildet der Anhang mit Lösungen zu den Übungen und mit Informationen zu Möglichkeiten, PHP zu konfigurieren, sowie mit einem Einblick ins Debugging von PHP-Skripten mit phpdbg.

Den gesamten Code der Listings können Sie auf der Verlagswebsite zu diesem Buch unter www.dpunkt.de/php7 herunterladen.

Damit wissen Sie alles Wichtige zum Buch und können mit PHP loslegen. Ich wünsche Ihnen viel Spaß dabei!

Inhaltsübersicht

1Das Prinzip dynamischer Webseiten

2Die Entwicklungsumgebung einrichten

3HTML und CSS – Grundlagen

4PHP-Basics

5Mehr Basics

6Funktionen für Strings, Arrays, Datum und mehr

7Formulare verarbeiten mit PHP

8Zustände über Cookies und Sessions beibehalten

9Objektorientierung

10Daten komfortabel verwalten mit MySQL/MariaDB

11PHP und MySQL

12Dateien lesen und schreiben, Verarbeitung von XML und Erzeugung von PDF-Dokumenten

13Mit Grafiken arbeiten

14PHP-Frameworks am Beispiel von Laravel

15jQuery, Ajax und PHP

AAnhang

BLösungen zu den Übungen

Index

Inhaltsverzeichnis

1Das Prinzip dynamischer Webseiten

2Die Entwicklungsumgebung einrichten

2.1Verschiedene Entwicklungsumgebungen

2.2XAMPP-Installation unter Windows

2.3XAMPP für Linux

2.4XAMPP/MAMP für macOS

2.5XAMPP testen

2.6Erste Beispieldatei

2.7Mögliche Probleme beim Aufruf des ersten PHP-Dokuments

2.8PHP konfigurieren

2.9Alternative zu XAMPP: integrierter Webserver oder ein eigener virtueller Server

2.10Mehr PHP: Erweiterungen und Composer

2.10.1Composer installieren

2.11Zusammenfassung

3HTML und CSS – Grundlagen

3.1Grundstruktur

3.1.1Inhalte mit Überschriften, Absätzen und Listen strukturieren

3.1.2Aufzählungen

3.2Sonderzeichen und Zeichencodierung

3.3Verknüpfungen – Links und Bilder

3.3.1Links

3.3.2… und Bilder

3.4Daten übersichtlich über Tabellen darstellen

3.5Elemente zur Strukturierung

3.6Meta-Elemente

3.7Formatierung mit CSS

3.7.1Farbangaben

3.7.2Mehr Freiheit durch Klassen

3.7.3Weitere Selektoren

3.7.4Weitere häufig benötigte Formatierungen

3.8Zusammenfassung

4PHP-Basics

4.1PHP in HTML-Dokument einbinden

4.1.1Verschiedene Varianten der Einbindung

4.1.2PHP-Befehle überall

4.2Kommentare

4.3Variablen definieren und ausgeben

4.3.1Notice bei nicht initialisierten Variablen

4.3.2Den Inhalt von Variablen ausgeben

4.3.3Sonderzeichen in Anführungszeichen

4.3.4Variablennamen über {} kennzeichnen

4.3.5Komfortable Ausgabe über HereDoc und NowDoc

4.3.6Qual der Wahl: einfache oder doppelte Anführungszeichen?

4.3.7Voll flexibel: variable Variablen

4.4Konstanten definieren

4.5Operatoren

4.5.1Arithmetische Operatoren

4.5.2Strings verknüpfen

4.6Datentypen

4.6.1Strings

4.6.2Integer und Float

4.6.3Wahrheitswerte

4.6.4Weitere Datentypen

4.6.5Immer der richtige Typ

4.6.6TypeCasting

4.7Arrays

4.7.1Arrays erstellen

4.7.2Informationen über Arrays ausgeben lassen

4.7.3Arrays durchlaufen mit foreach

4.7.4Zufällig ein Bild anzeigen lassen

4.7.5Assoziative Arrays

4.7.6Schlüssel von Arrays richtig angeben

4.7.7Arrays und Variableninterpolation

4.7.8Verschachtelte Arrays am Beispiel

4.8Nützlich für alle Zwecke: Dateien einbinden

4.9Zusammenfassung

5Mehr Basics

5.1Je nachdem … Entscheidungen fällen

5.1.1if – elseif – else

5.1.2Bedingungen kombinieren

5.1.3switch

5.2Schleifen – mehrmals dasselbe tun

5.2.1while-Schleife

5.2.2do-while-Schleife: zumindest einmal

5.2.3Kompakt: die for-Schleife

5.2.4Verschachtelte Schleifen

5.2.5Schleifen steuern über break und continue

5.2.6goto

5.2.7Alternative Syntax für Verzweigungen und Schleifen

5.3Funktionen schreiben

5.3.1Übergabe per Wert und per Referenz

5.3.2Defaultwerte für Parameter

5.3.3Zugriff auf Variablen innerhalb und außerhalb von Funktionen

5.3.4Variadische Funktionen

5.3.5Lambda-Funktionen und Closures

5.4Funktionen: Datentyp von Parametern und Rückgabewerten angeben

5.4.1Datentyp von Parametern bestimmen – skalare Typdeklarationen

5.4.2Datentyp bei Rückgabewerten festlegen

5.5Klassen und Objekte

5.5.1Objektorientierte Programmierung

5.5.2Methoden und Eigenschaften

5.6Unterstützung bei der Fehlersuche

5.6.1Leerzeichen und Einrückungen

5.6.2Editor mit mehr Fähigkeiten

5.7Fehlersuche – der Parse Error

5.7.1Fehlendes Anführungszeichen

5.7.2Vergessene geschweifte Klammern

5.7.3Mehr Fehlertypen

5.8Zusammenfassung

6Funktionen für Strings, Arrays, Datum und mehr

6.1Funktionen im PHP-Manual

6.2Funktionen für Variablen

6.3Funktionen für Strings

6.3.1Mehr Optionen für die Ausgabe

6.3.2Suchen, Finden und Ersetzen

6.3.3Volle Freiheit mit regulären Ausdrücken

6.3.4Zusammenarbeit mit HTML

6.3.5Zeichencodierungen

6.4Funktionen für Arrays

6.4.1Arrays und Strings

6.4.2Arrays sortieren

6.4.3Weitere Arrayfunktionen

6.5Arbeiten mit Datum und Uhrzeit – klassisch mit date() & Co.

6.5.1Datum formatiert ausgeben über date()

6.5.2strftime() und setlocale()

6.5.3Ein beliebiges Datum festlegen

6.5.4Die Differenz zwischen zwei Daten berechnen

6.5.5Datumsangabe überprüfen

6.6DateTime-Klasse – Datumsangaben inklusive Zeitzonen und mehr

6.6.1Die DateTime-Klasse nutzen

6.6.2Eingedeutschte Datumsangaben

6.6.3Zeitspannen addieren und mit wiederkehrenden Terminen arbeiten

6.6.4Mit Zeitzonen arbeiten – oder wie viel Uhr ist es in Mexico City?

6.7Zusammenfassung

7Formulare verarbeiten mit PHP

7.1Formularbasis

7.1.1Verarbeitung im selben Skript

7.2Zwei Methoden: POST und GET

7.3Weitere Formularelemente

7.3.1Radiobuttons, Auswahllisten und mehrzeilige Textfelder

7.3.2Checkboxen

7.4Sicherheit – misstrauen Sie Ihren Besuchern

7.4.1Bösartige Formulareingaben

7.4.2Formulare manipulieren

7.5Formulare absichern

7.5.1Output maskieren

7.5.2Input prüfen

7.5.3Inhalte prüfen mit der Erweiterung filter

7.6Formularvalidierung mit vorausgefüllten Formularfeldern

7.7Formulardaten per E-Mail versenden

7.7.1E-Mail versenden – Grundlagen

7.7.2Daten aus Formularen per E-Mail versenden

7.7.3Komfortabel Mails versenden über den PHPMailer

7.8Dateien hochladen

7.8.1Dateiupload: Grundlegendes

7.8.2Skript für den Bildupload

7.9Zusammenfassung

8Zustände über Cookies und Sessions beibehalten

8.1Cookies

8.1.1Cookies – allgemeine Eigenschaften

8.1.2Kommunikation zwischen Browser und Server

8.1.3Cookies setzen per PHP

8.1.4Cookies setzen und auslesen

8.1.5Die einzelnen Schritte genau betrachtet

8.1.6Headers already sent

8.1.7Ausgabepufferung aktivieren

8.1.8Cookies und Sicherheit

8.2Sessions – Sitzungen

8.2.1Speicherung von Session-Informationen

8.2.2Sessions bei deaktivierten Cookies

8.3Ein Log-in-System mit Sessions

8.4Die Passwort-API

8.5Zusammenfassung

9Objektorientierung

9.1Methoden und Eigenschaften

9.2Konstruktor und Destruktor

9.3Anonyme Klassen

9.4Objekte verschachteln

9.5Konstanten definieren

9.6Mehr Funktionalität bei der Klasse Kunde

9.7Vererbung

9.7.1Premiumkunden

9.7.2Konstruktoren in der Basisklasse und in der abgeleiteten Klasse

9.8Zugriff steuern

9.9Vererbung und Überschreibung genau steuern

9.9.1Überschreibung verhindern mit final

9.9.2Überschreibung fordern mit abstract

9.9.3Schnittstellen – Interfaces

9.10Typdeklarationen (ursprünglich Type Hints)

9.11static – auch ohne Objekt aufrufbar

9.11.1Statische Methoden

9.11.2Statische Eigenschaften

9.11.3Late Static Binding

9.12Weitere magische Methoden

9.12.1__set() und __get()

9.12.2__call() und callStatic() – Magie für Methoden

9.12.3Ausgabe steuern über __toString()

9.13Klassen automatisch laden

9.14Referenzen, Klone und Vergleiche

9.14.1Referenzen und Klone

9.14.2Objekte vergleichen

9.15Namensräume

9.15.1Grundlegendes

9.15.2Absolut und relativ

9.15.3Abkürzungen: use benutzen

9.15.4Globaler Namensraum

9.15.5Vollständigen Klassennamen ermitteln mit ::class

9.16Traits – Code wiederverwenden

9.16.1Konfliktlösungen

9.16.2Mehrere Traits nutzen

9.17Fehlerbehandlung mit der Exception- und der Error-Klasse

9.17.1Exception-Klasse

9.17.2Error-Klasse

9.18Generatoren

9.19Überblick über die bei der objektorientierten Programmierung benutzten Schlüsselwörter

10Daten komfortabel verwalten mit MySQL/MariaDB

10.1MySQL und mehr

10.2Datenbanken – Grundlegendes

10.3phpMyAdmin

10.3.1root-Passwort vergeben

10.4Datenbank anlegen und benutzen

10.4.1Tabellen erstellen

10.5Datentypen in MySQL für Tabellen

10.5.1Numerische Datentypen

10.5.2Datums- und Zeittypen

10.5.3Datentypen für Strings

10.5.4Binärdaten

10.6Daten einfügen

10.7Datensätze verändern

10.8Datensätze löschen

10.9Daten auslesen

10.9.1Datensätze sortieren und Anzahl beschränken

10.9.2Datensätze auswählen und filtern

10.9.3Datensätze zählen

10.10Mit mehreren Tabellen arbeiten

10.10.1Weitere Beispiele für Abfragen über mehrere Tabellen

10.11Inhalte exportieren und importieren

10.12Zusammenfassung

11PHP und MySQL

11.1MySQLi – die verbesserte Erweiterung für MySQL

11.1.1MySQLi verwenden

11.2MySQLi-Beispiel: Durch Datensätze blättern

11.3MySQLi: Nützliche Informationen über das Ergebnis

11.3.1mysqli-Klasse

11.3.2mysqli_result-Klasse

11.4MySQLi: Sonderzeichen behandeln

11.5SQL-Injections

11.6MySQLi: Prepared Statements – auf alles bestens vorbereitet

11.7MySQLi-Beispiel: Daten über ein Formular eingeben, ändern und löschen

11.7.1Vorbereitung

11.7.2Skript zur Anzeige

11.7.3Neue Nachricht verfassen

11.7.4Nachricht löschen

11.7.5Bestehende Nachrichten bearbeiten

11.8MySQLi-Schnittstelle prozedural

11.9Grundlegende Operationen mit PDO

11.9.1Verbindung erstellen

11.9.2Daten einfügen, ändern und löschen

11.9.3Datensätze auslesen

11.9.4Anzahl der Datensätze ermitteln

11.10PDO: Fehlermodi

11.11PDO Prepared Statements

11.12PDO: Daten als Objekte einer bestimmten Klasse zurückgeben lassen

11.13Zusammenfassung

12Dateien lesen und schreiben, Verarbeitung von XML und Erzeugung von PDF-Dokumenten

12.1Wichtige Basis: Dateirechte

12.2Schnell zum gewünschten Ziel über file_get_contents() und file_put_contents()

12.2.1Inhalte schnell auslesen

12.2.2In Dateien schreiben

12.3Schritt für Schritt mit fopen() & Co.

12.3.1Eine Datei in verschiedenen Modi öffnen

12.3.2Zeilenweise auslesen

12.3.3In Dateien schreiben

12.3.4Prüfungen durchführen

12.4XML-Dateien auslesen

12.4.1Zugriff auf XML-Dateien – Grundlagen

12.4.2Auf Newsfeeds zugreifen

12.5Arbeiten mit Archiven

12.5.1Erstellen und Lesen von ZIP-Dateien

12.5.2Phar-Archiv

12.6PDF-Dokumente erzeugen

12.6.1Vorbereitungen

12.6.2PDF-Dokument erzeugen lassen

12.7Zusammenfassung

13Mit Grafiken arbeiten

13.1Bildbearbeitung mit PHP – Grundlegendes

13.1.1Einfache Bilder erstellen

13.2Vorschaubilder per PHP erzeugen

13.2.1Weitere Bildbearbeitungen

13.3Diagramme erstellen

13.3.1Balkendiagramme

13.3.2Tortendiagramm

13.4Zusammenfassung

14PHP-Frameworks am Beispiel von Laravel

14.1Vorteil von Frameworks

14.2Installation von Laravel

14.2.1Laravel mithilfe von Composer installieren

14.2.2Laravel-Projekt innerhalb von htdocs

14.2.3Lavarel-Projekt außerhalb von htdocs

14.3Erste Begegnung mit Laravel

14.4Routing

14.5Controller

14.6Resource Controllers und Routes

14.7Views

14.7.1Views mit PHP pur

14.7.2Daten an Views übergeben

14.7.3Externe Dateien einbinden

14.7.4Blade-Templates

14.7.5Views organisieren

14.8Datenbanken mit Laravel nutzen

14.8.1Datenbankzugriff konfigurieren

14.8.2Tabellen automatisch erstellen lassen

14.8.3Query-Builder

14.8.4Eloquent ORM

14.9Einmal alles zusammen

14.10Zusammenfassung

15jQuery, Ajax und PHP

15.1jQuery für Anwendungen

15.2Vorbereitungen

15.3Verstecken und Einblenden eines Containers

15.4Elemente mit jQuery auswählen

15.5Formatierungen zuweisen und Elementinhalte bearbeiten

15.6Inhalte verändern

15.7Ereignisse in jQuery

15.8Mit jQuery Daten von PHP anfordern

15.8.1Kurz vorgestellt: Ajax

15.8.2Asynchron Inhalte mit GET versenden

15.8.3Ajax: Formulardaten per POST versenden

15.9Zusammenfassung und Ausblick

AAnhang

A.1Konfigurationsmöglichkeiten für PHP

A.1.1Einstellungen in httpd.conf oder .htaccess setzen

A.1.2Informationen zur Konfiguration auslesen und Einstellungen im Skript setzen

A.2Debugging mit phpdbg

BLösungen zu den Übungen

B.1Kapitel 3

B.2Kapitel 4

B.3Kapitel 5

B.4Kapitel 6

B.5Kapitel 7

B.6Kapitel 8

B.7Kapitel 9

B.8Kapitel 10

B.9Kapitel 11

B.10Kapitel 12

B.11Kapitel 14

Index

1Das Prinzip dynamischer Webseiten

PHP ist eine serverseitige Skriptsprache. Was aber bedeutet das genau?

»Serverseitig« heißt erst einmal, dass der PHP-Code nicht auf dem Client, d.h. im Browser, ausgeführt wird, sondern auf dem Server. Um das besser nachvollziehen zu können, muss man sich einmal vor Augen führen, wie die Kommunikation im Internet bei statischen HTML-Seiten ohne PHP-Code abläuft. Diese besteht im Wesentlichen aus zwei Schritten:

  1. Der Surfer gibt eine Adresse in die Adresszeile seines Browsers ein und drückt auf Enter. Der Browser stellt eine Anfrage (REQUEST) an den Server nach der entsprechenden HTML-Datei.
  2. Der Server liefert als Antwort (RESPONSE) diese Datei an den Browser, der sie dann darstellt.

In diesem klassischen Fall liegt die HTML-Seite, die der Browser anzeigt, genau in dieser Form auch auf dem Server. Der Server liefert die Datei, die in einem seiner Verzeichnisse liegt, nur aus, er verändert nichts daran.

Abb. 1–1Kommunikation zwischen Browser und Webserver: Die angeforderte HTML-Seite wird an den Browser ausgeliefert, der diese darstellt.

Übrigens hat das Wort Server zwei Bedeutungen. Zum einen meint man mit Server einen Rechner im Internet, d.h. die Hardware. Entscheidend aber dafür, dass die Kommunikation funktioniert, ist die Webserver-Software. Diese hat die Funktion, die Dateien auf Anfrage auszuliefern. Da die wichtige Komponente hier die Server-Software ist, können Sie – wie im nächsten Kapitel beschrieben – sich auch einen Server auf Ihrem normalen Arbeitsrechner einrichten. Äußerst nützlich zum Testen von PHP-Skripten!

Sehen wir uns jetzt an, wie das Ganze funktioniert, wenn PHP mit im Spiel ist. Dieses Mal sind es mehr Schritte:

  1. Ein Surfer tippt eine Adresse ein. Der Browser leitet diesen REQUEST an den Webserver weiter.
  2. Bei der angeforderten Seite handelt es sich dieses Mal um ein PHP-Skript. Der Webserver erkennt das an der Dateiendung .php. Daher liefert er die Seite nicht direkt an den Browser (Client) aus, sondern übergibt sie einem Programm – bei PHP dem PHP-Parser.
  3. Der PHP-Parser interpretiert die PHP-Befehle und erzeugt daraus eine neue HTML-Seite.
  4. Diese HTML-Seite wird an den Browser zurückgesendet. Die im Browser angezeigte Seite heißt zwar noch xy.php, sie enthält aber keinen PHP-Code mehr, sondern nur HTML-Code.

Abb. 1–2Die Kommunikation zwischen Client und Server bei dynamischen Seiten

Der entscheidende Unterschied zu den statischen Seiten ist, dass bei der Anforderung einer PHP-Seite vom Browser in dieser PHP-Seite auf dem Server noch nicht die fertige HTML-Seite vorliegt, sondern PHP-Befehle enthalten sind. Der Server reicht die Seite mit den PHP-Befehlen an den PHP-Parser weiter, der die Befehle ausführt und die neue HTML-Seite generiert. Und damit sind dynamische Seiten möglich, also Seiten, die jedes Mal, wenn sie von einem Client aufgerufen werden, mit aktuellen Daten erstellt werden.

Da ein zusätzlicher Bearbeitungsvorgang auf dem Server stattfindet, spricht man davon, dass PHP eine serverseitige Skriptsprache ist. Für den Browser ändert sich hingegen nichts: Er erhält wieder eine einfache HTML-Datei. Das ist auch genau das, was der Browser versteht: Er kann nur HTML-Code darstellen, PHP kann er nicht interpretieren.

Da dynamische Webseiten bei Bedarf erstellt werden, ist es prinzipiell nicht möglich, zu sagen, wie viele Seiten im Internet stehen. Angenommen, Sie suchen ein Buch von Patricia Highsmith in Ihrem Online-Buchladen. Sie geben den Namen der Autorin in ein Formular ein und erhalten danach die Ergebnisse präsentiert. Falls noch niemand vor Ihnen in diesem Online-Buchladen nach Büchern von Patricia Highsmith gesucht hat, hat auch noch niemand genau die Ergebnisseite präsentiert bekommen, die Sie gerade sehen. Oder aber jemand hat vielleicht vor Ihnen schon genau diesen Suchbegriff eingegeben, aber seitdem sind neue Bücher erschienen – dann hat der Besucher vor Ihnen ebenfalls eine Seite mit anderen Ergebnissen gesehen.

Da PHP eine serverseitige Skriptsprache ist, steht es beispielsweise im Gegensatz zu clientseitigem, das heißt im Browser ausgeführten JavaScript.1 JavaScript wird zum Beispiel eingesetzt, um Pop-up-Fenster zu öffnen, um Formulareingaben zu prüfen oder für Verbesserungen an der Benutzeroberfläche, wie Tabs und Accordions. Da JavaScript im Browser ausgeführt wird, kann es vom Benutzer im Browser deaktiviert werden.

JavaScript kann wunderbar mit PHP kombiniert werden. Beispielsweise kann man eine Formularprüfung parallel mit JavaScript und PHP durchführen. Die Prüfung per JavaScript findet statt, bevor die Formulardaten den Rechner des Surfers verlassen, der Benutzer erhält dadurch ein schnelles Feedback. Da sich JavaScript jedoch deaktivieren lässt, findet sicherheitshalber eine zusätzliche Prüfung per PHP statt, die vom Benutzer nicht »ausgehebelt« werden kann.

Beispiele dafür, was Sie mit JavaScript machen können und wie es mit PHP zusammenarbeitet, zeigt Kapitel 15 anhand der beliebten JavaScript-Bibliothek jQuery.

Im nächsten Kapitel erfahren Sie, wie Sie sich Ihre Entwicklungsumgebung einrichten. Davor kurz aber noch die wichtigsten Eckpunkte zur Geschichte von PHP. Der Schöpfer von PHP ist Rasmus Lerdorf. Heute wird PHP von mehreren Entwicklern betreut. Die erste Version von PHP erschien 1995. Damals wurde die Abkürzung PHP noch aufgelöst als Personal Home Page Tools; inzwischen steht PHP wie erwähnt für PHP Hypertext Preprocessor. Die zweite Version von PHP erschien 1996, die dritte 1998. PHP 4 gibt es seit 2000, und im Juli 2004 ist PHP 5 herausgekommen. Weitere Meilensteine sind PHP 5.3, veröffentlicht im Juni 2009, PHP 5.4, erschienen im März 2012, PHP 5.5 vom Juni 2013 sowie PHP 5.6 vom August 2014.

Nach PHP 5.6 wurde allerdings nicht PHP 6 publiziert, sondern PHP 7. Der Grund für diesen Versionssprung: PHP 6 sollte ursprünglich Unicode-Unterstützung bringen, allerdings ging die Implementierung nicht so vonstatten wie gewünscht. Deswegen entschied man sich, stattdessen den 5-er Zweig weiterzuentwickeln und veröffentlichte PHP 5.3. Obwohl PHP 6 nie erschienen ist, gibt es jedoch Bücher und Artikel, die PHP 6 im Titel tragen. Um Verwirrungen zu vermeiden, welche Artikel/Bücher wirklich die neuere Version behandeln, entschied man sich, PHP 6 auszulassen und die neue Version PHP 7 zu nennen. PHP 7 wurde im Dezember 2015 veröffentlicht. Die weiteren Versionen erschienen nun regelmäßig am Ende des Jahres: Dezember 2016 PHP 7.1, November 2017 PHP 7.2 und Ende 2018 PHP 7.3.

2Die Entwicklungsumgebung einrichten

Zur Arbeit mit PHP benötigen Sie eine entsprechende Entwicklungsumgebung. Dieses Kapitel zeigt Ihnen, wie Sie diese installieren. Außerdem erstellen Sie ein erstes PHP-Beispielskript und sehen, wie Sie die PHP-Konfiguration anpassen können.

2.1Verschiedene Entwicklungsumgebungen

Um PHP-Skripte zu erstellen, brauchen Sie zwei Dinge:

  • die Webserver-Software – am häufigsten benutzt wird hier Apache – und
  • PHP selbst.

Wenn Sie dann – wie später im Buch beschrieben – auf eine Datenbank zurückgreifen möchten, brauchen Sie zusätzlich

  • MySQL oder MariaDB als Datenbankmanagementsystem.

Eine Möglichkeit ist, dass Sie Ihre Skripte bei einem Provider mit PHP-Unterstützung testen. Dann erstellen Sie Ihre Skripte lokal auf Ihrem Computer und laden sie zum Testen per FTP-Programm auf den Webserver beim Provider.

Praktischer ist es jedoch, wenn Sie sich selbst auf Ihrem lokalen Rechner eine vollständige Entwicklungsumgebung einrichten. Das hat mehrere Vorteile:

  • Das Testen geht schneller vonstatten.
  • Außerdem können Sie sich mit der Konfiguration von PHP vertraut machen und diese bei Bedarf auch anpassen – das ist eventuell beim Provider nur mit Einschränkungen möglich.
  • Zusätzlich können Sie Ihr Skript unter verschiedenen Bedingungen ausprobieren.

Die drei benötigten Komponenten – Webserver, PHP und MySQL/MariaDB – können Sie einzeln herunterladen und installieren. Es gibt jedoch praktische Komplettpakete, die alle benötigten Komponenten schon enthalten und die Installation wesentlich vereinfachen. Besonders erfolgreich ist XAMPP von den Apache Friends.1

XAMPP gibt es für Windows, Linux und macOS. Neben den unbedingt benötigten Komponenten beinhaltet XAMPP weitere nützliche Dinge wie beispielsweise phpMyAdmin zur Administration von MySQL-/MariaDB-Datenbanken (Genaueres zu phpMyAdmin in Kap. 10). Deswegen wird hier die Installation von XAMPP gezeigt.

Sollten Sie doch die Komponenten einzeln installieren wollen, so bietet das PHP-Manual2 die notwendigen Anleitungen.

Um PHP mit dem Server zu verbinden, können Sie entweder eine direkte Modulschnittstelle benutzen oder PHP als CGI- oder FastCGI-Prozessor benutzen. Die erste Variante wird bei XAMPP eingesetzt und ist prinzipiell aus Performance-Gründen zu bevorzugen.

2.2XAMPP-Installation unter Windows

Die Installation von XAMPP unter Windows lässt sich in ein paar Schritten erledigen.

Laden Sie die aktuelle Windows-Version unter https://www.apachefriends.org/de/ herunter. Klicken Sie dann auf die heruntergeladene Datei. Nun werden Sie durch die einzelnen Installationsschritte geführt und können die Komponenten auswählen, die installiert werden sollen – das können Sie aber auch auf dem Standard belassen. Außerdem müssen Sie festlegen, wohin XAMPP installiert werden soll.

Nehmen Sie prinzipiell besser nicht das Verzeichnis c:\program files (c:\Programme) zur Installation, wenn die UAC (User Account Control) aktiviert ist.

Dann können Sie am Fortschrittsbalken verfolgen, wie die Installation fortschreitet. Wenn Sie das Häkchen im letzten Bildschirm nicht entfernen, wird das Kontrollzentrum automatisch gestartet, vorher müssen Sie allerdings die Sprache wählen, in der das Kontrollzentrum erscheinen soll. Ansonsten finden Sie das Kontrollzentrum in Ihrem XAMPP-Ordner unter dem Namen xampp-control.exe.

Klicken Sie im Kontrollzentrum bei Apache und MySQL auf Starten. Apache und MySQL/MariaDB werden gestartet (Abb. 2–1). Über dieses Bedienfenster können Sie ebenso einzelne Programme wieder stoppen.

Sie können Apache und MySQL/MariaDB auch als Dienst starten. Dann laufen diese Prozesse im Hintergrund. Hierfür müssen Sie Dienste/Service aktivieren.

Abb. 2–1Das Kontrollzentrum von XAMPP unter Windows

Alternativ zum Kontrollzentrum lässt sich XAMPP auch über xampp_start.exe starten und mit der Datei xampp_stop.exe stoppen. Diese Dateien befinden sich ebenfalls in Ihrem XAMPP-Ordner. Das Kontrollzentrum bietet aber mehr Komfort: So erhalten Sie hier auch Hinweise auf mögliche Probleme – nützlich sind außerdem die Buttons, über die Sie direkt zur Konfiguration gelangen oder sich die Logs anzeigen lassen können.

Meist werden Sie Apache und MySQL benötigen, über das Control Panel können Sie ebenfalls die Server FileZilla und Mercury starten.

FileZilla ist gleichzeitig der Name eines FTP-Clients und eines FTP-Servers. Über das XAMPP Control Panel können Sie den FTP-Server starten. Diesen brauchen Sie, wenn Sie auf Ihren eigenen Server Dateien per FTP laden möchten, beispielsweise weil Sie anderen Rechnern in einem Netzwerk die Möglichkeit bieten wollen, per FTP Daten zu übertragen. Wenn Sie XAMPP auf dem Rechner installieren, mit dem Sie auch die PHP-Dateien erstellen, benötigen Sie den File-Zilla-Server nicht: Sie können Ihre PHP-Dateien direkt in das richtige Verzeichnis abspeichern.

Um später Ihre Skripte zum Server des Providers hochzuladen, brauchen Sie hingegen einen FTP-Client, und hier ist das Client-Programm von FileZilla empfehlenswert. Sie finden es unter http://www.filezilla.de/.

Mercury ist der Mailserver. Sie benötigen ihn, wenn Sie per PHP Mails über Ihren lokalen Rechner versenden möchten (Kap. 7).

Außerdem sehen Sie die Option, um Tomcat zu starten – was allerdings voraussetzt, dass Sie die XAMPP-Variante mit Apache Tomcat gewählt haben. Tomcat stellt eine Umgebung zur Ausführung von Java-Code auf Webservern bereit. Für die Arbeit mit PHP benötigen Sie Tomcat erst einmal nicht.

Bei der Installation erhalten Sie eventuell die bei Windows üblichen Warnungen (Benutzerkontenschutz), ob Sie wirklich die entsprechende Aktion ausführen möchten, und müssen bestätigen, dass Sie es wirklich wollen.

Probleme mit dem Starten von Apache hängen oft damit zusammen, dass bereits ein anderes Programm die benötigten Ports belegt. Beispielsweise kann das mit Skype passieren. In diesem Fall müssen Sie bei Skype auf Aktionen/Verbindungsoptionen/Verbindung das Häkchen bei Port 80 als Alternative für eingehende Verbindungen verwenden entfernen. Danach ist ein Neustart von Skype erforderlich.

Hinweise auf Port- oder andere Probleme liefert Ihnen auch das Control Panel. Hilfreich ist es, die dort erscheinende Meldung eins zu eins in Anführungszeichen bei einer Suchmaschine einzugeben. Meist hatten andere schon dasselbe Problem, und Sie finden dann Lösungsvorschläge in einem Forumbeitrag.

Weitere nützliche Tipps bei Problemen mit XAMPP unter Windows bietet die FAQ.3

2.3XAMPP für Linux

Selbstverständlich können Sie bei allen gängigen Linux-Distributionen die benötigten Komponenten – Apache, PHP und MySQL – einzeln installieren. Aber auch hier bietet XAMPP eine Arbeitserleichterung und ist die richtige Wahl für alle, die sofort einsteigen und nicht erst konfigurieren möchten. Wenn Sie sich für XAMPP unter Linux entscheiden, finden Sie das Paket unter http://www.apachefriends.org/de/xampp-linux.html.