PHP & MySQL
Schnelleinstieg
Programmieren lernen in 14 Tagen
Einfach und ohne Vorkenntnisse
Bibliografische Information der Deutschen Nationalbibliothek
Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über <http://dnb.d-nb.de> abrufbar.
ISBN 978-3-7475-0397-3
1. Auflage 2022
www.mitp.de
E-Mail: mitp-verlag@sigloch.de
Telefon: +49 7953 / 7189 - 079
Telefax: +49 7953 / 7189 - 082
© 2022 mitp Verlags GmbH & Co. KG
Mit freundlicher Genehmigung der HfG Schwäbisch Gmünd verwenden einige Abbildungen Emojis von OpenMoji (https://openmoji.org) – dem Open-Source Emoji- und Icon-Projekt.
Dieses Werk, einschließlich aller seiner Teile, ist urheberrechtlich geschützt. Jede Verwertung außerhalb der engen Grenzen des Urheberrechtsgesetzes ist ohne Zustimmung des Verlages unzulässig und strafbar. Dies gilt insbesondere für Vervielfältigungen, Übersetzungen, Mikroverfilmungen und die Einspeicherung und Verarbeitung in elektronischen Systemen.
Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Werk berechtigt auch ohne besondere Kennzeichnung nicht zu der Annahme, dass solche Namen im Sinne der Warenzeichen- und Markenschutz-Gesetzgebung als frei zu betrachten wären und daher von jedermann benutzt werden dürften.
Lektorat: Janina Bahlmann
Sprachkorrektorat: Claudia Fluor
Covergestaltung: Janina Bahlmann, Christian Kalkert
Covergrafik & Icons: Tanja Wehr, sketchnotelovers
Electronic Publishing: Petra Kleinwegen
Dieses Ebook verwendet das ePub-Format und ist optimiert für die Nutzung mit dem iBooks-reader auf dem iPad von Apple. Bei der Verwendung anderer Reader kann es zu Darstellungsproblemen kommen.
Hinweis des Verlages zum Urheberrecht und Digitalen Rechtemanagement (DRM)
Der Verlag räumt Ihnen mit dem Kauf des ebooks das Recht ein, die Inhalte im Rahmen des geltenden Urheberrechts zu nutzen. Dieses Werk, einschließlich aller seiner Teile, ist urheberrechtlich geschützt. Jede Verwertung außerhalb der engen Grenzen des Urheherrechtsgesetzes ist ohne Zustimmung des Verlages unzulässig und strafbar. Dies gilt insbesondere für Vervielfältigungen, Übersetzungen, Mikroverfilmungen und Einspeicherung und Verarbeitung in elektronischen Systemen.
Der Verlag schützt seine ebooks vor Missbrauch des Urheberrechts durch ein digitales Rechtemanagement. Bei Kauf im Webshop des Verlages werden die ebooks mit einem nicht sichtbaren digitalen Wasserzeichen individuell pro Nutzer signiert.
Bei Kauf in anderen ebook-Webshops erfolgt die Signatur durch die Shopbetreiber. Angaben zu diesem DRM finden Sie auf den Seiten der jeweiligen Anbieter.
Impressum
Einleitung
E.1 Programmieren lernen in 14 Tagen
E.2 Der Aufbau des Buchs
E.3 Programmtexte und Lösungen zum Download
E.4 Fragen und Feedback
1 Erste Schritte mit PHP
1.1 Wofür wird PHP eingesetzt?
1.1.1 PHP zur Erzeugung dynamischer Webseiten
1.1.2 PHP zur Bereitstellung von Webservices
1.1.3 Kommandozeilenprogramme mit PHP
1.2 Stärken von PHP
1.3 Schwächen von PHP
1.4 Was ist für die Entwicklung mit PHP notwendig?
1.5 Quelltext und PHP-Interpreter
1.6 Kommandozeile nutzen
1.6.1 Kommandozeile starten
1.6.2 Kommandozeilen-Einmaleins
1.7 PHP installieren
1.7.1 Windows
1.7.2 macOS
1.7.3 Linux
1.8 Quelltext-Editor verwenden: Visual Studio Code
1.9 Das erste PHP-Skript ausführen
1.11 Wie entstand PHP?
1.12 Übungen
2 Variablen, Datentypen und Konstanten
2.1 Daten in einer Variablen erfassen
2.1.1 EVA: Grundprinzip der Datenverarbeitung
2.1.2 Variablen erzeugen und verwenden
2.1.3 Regeln für Variablennamen
2.1.4 Datentypen und die »dynamische Typisierung«
2.2 Einfache Datentypen
2.2.1 Daten wörtlich aufschreiben: Literale
2.2.2 Zeichenkette (String)
2.2.3 Ganzzahl (Integer)
2.2.4 Gleitkommazahl (Float)
2.2.5 Wahrheitswert (Boolean)
2.3 Der spezielle Datentyp: NULL
2.4 Der vielseitige Datentyp: Array
2.4.1 Numerisch indizierte Arrays
2.4.2 Assoziative Arrays
2.4.3 Mehrdimensionale Arrays
2.5 Datentypen umwandeln
2.5.1 Type Juggling
2.5.2 Type Casting
2.6 Programmstrukturen
2.6.1 Ausdrücke
2.6.2 Anweisungen
2.7 Konstanten
2.7.1 Literale Konstanten
2.7.2 Benannte Konstanten
2.7.3 Vordefinierte Konstanten
2.7.4 Magische Konstanten
2.8 Übungen
3 Programmablauf mit Kontrollstrukturen steuern
3.1 Programmablauf verzweigen
3.1.1 Bedingte Anweisung mit if
3.1.2 Beispiel: Passwortabfrage
3.1.3 Verzweigung mit if...else
3.1.4 Beispiel: Eintrittskarte Zoo
3.1.5 Der ternäre Operator ?:
3.1.6 Fallunterscheidung mit if…elseif...else
3.1.7 Beispiel: Bankautomat
3.2 Bedingungen formulieren
3.2.1 Vergleichoperatoren
3.2.2 Gleichheit (==) und Identität (===)
3.2.3 Logische Operatoren
3.2.4 Beispiel: Schaltjahrprüfung
3.3 Programmabschnitte mit Schleifen wiederholen
3.3.1 Arrays durchlaufen – foreach
3.3.2 Beispiel: Getränkekarte
3.3.3 Zählschleife – for
3.3.4 Beispiel: Countdown
3.3.5 Bedingte Wiederholung – while
3.3.6 Beispiel: Lostopf
3.3.7 Schleifen abbrechen – break
3.3.8 Schleife beim nächsten Durchlauf fortsetzen – continue
3.3.9 Endlosschleifen
3.4 Alternative Syntax für Kontrollstrukturen
3.5 Übungen
4 Programmierfehler und PHP-Konfiguration
4.1 Programmierfehler
4.1.1 Syntaxfehler
4.1.2 Laufzeitfehler
4.1.3 Logische Fehler
4.2 PHP konfigurieren: die php.ini-Datei
4.2.1 Was ist die php.ini-Datei?
4.2.2 Wo ist die php.ini und wie wird sie bearbeitet?
4.2.3 PHP-Einstellungen zur Laufzeit
4.2.4 PHP-Erweiterungen aktivieren
4.3 Fehlerstufen
4.4 Fehlersichtbarkeit einstellen
4.5 Übungen
5 Funktionen
5.1 Native Funktionen aus der PHP-Bibliothek verwenden
5.1.1 Signatur einer Funktion
5.1.2 Rückgabewerte
5.1.3 Mit Zahlen arbeiten: Mathematische Funktionen
5.1.4 Mit Texten arbeiten: String-Funktionen
5.1.5 Beispiel: E-Mail validieren
5.1.6 Mit Arrays arbeiten: Array-Funktionen
5.1.7 Beispiel: Passwort generieren
5.1.8 Die Unixzeit und Datumsfunktionen
5.2 Eigene Funktionen definieren
5.2.1 Hinweise auf Datentypen: Type Hints
5.2.2 Geltungsbereich von Variablen
5.3 Übungen
6 Webseiten entwickeln und veröffentlichen
6.1 Was geschieht beim Abruf einer Webseite?
6.1.1 Adressen für Computer: IP-Adressen
6.1.2 Adressbuch für Computer:
das Domain Name System (DNS)
6.1.3 Computer als Dienstleister im Internet: Host, Server und Client
6.1.4 Dienste auf einem Computer unterscheiden: Ports
6.2 Webserver auf dem eigenen Computer betreiben
6.2.1 Domainname für den eigenen Rechner: localhost
6.2.2 Lokalen Webserver starten
6.2.3 Das Dokument-Wurzelverzeichnis: Document-Root
6.2.4 Automatisch angezeigte Dateien: Index-Dateien
6.2.5 Entwicklungszyklus mit PHP auf dem Webserver
6.2.6 Infos über PHP anzeigen: phpinfo()
6.3 HTML-Grundgerüst
6.4 Anfragen und Antworten mit dem HTTP-Protokoll
6.4.1 Browser-Konsole nutzen
6.4.2 HTTP-Anfragen (Requests)
6.4.3 Header im superglobalen Array $_SERVER
6.4.4 HTTP-Antworten
6.4.5 HTTP als zustandsloses Protokoll
6.5 Webspace mieten und Webseite veröffentlichen
6.5.1 Anbieter finden
6.5.2 Webspace in der Praxis
6.6 Übungen
7 Dynamische Webseiten und Formulare
7.1 $_GET: Daten aus dem Query-String der URL
7.1.1 Der Query-String in Hyperlinks
7.1.2 Niemals Benutzereingaben vertrauen: Eingabevalidierung
7.2 Formulardaten im Query-String der URL übermitteln
7.2.1 Formular und Auswertung in einem Skript zusammenfassen
7.2.2 Niemals Eingabedaten vertrauen: Ausgabe-Maskierung
7.3 Einsatzgebiete der GET-Methode
7.4 $_POST: Formulardaten unsichtbar übermitteln
7.5 Vergleich zwischen GET und POST
7.6 Übungen
8 Mit Dateien arbeiten
8.1 Quelltext in mehreren Dateien strukturieren
8.1.1 Quelltext-Dateien einbinden und ausführen
8.1.2 Geltungsbereich von Variablen bei eingebundenen Dateien
8.1.3 Dateien außerhalb der Document-Root einbinden
8.2 Dateien schreiben und lesen
8.2.1 Dateien schreiben: file_put_contents()
8.2.2 Dateien lesen: file_get_contents()
8.2.3 Dateien als Array einlesen: file()
8.3 Dateien über das Internet laden
8.4 Datei-Uploads: $_FILES
8.4.1 $_POST und $_FILES
8.4.2 Uploads verarbeiten
8.4.3 Upload-Fehler
8.4.4 php.ini-Einstellungen
8.4.5 Datei-Art prüfen (MIME-Type)
8.5 Datei-Zugriffsrechte
8.5.1 Warum Zugriffsrechte?
8.5.2 Klassische Unix-Zugriffsrechte
8.5.3 Zugriffrechte ändern
8.6 Übungen
9 Cookies und Sessions
9.1 Cookies
9.1.1 Wie entsteht ein Cookie?
9.1.2 Cookie-Daten lesen: $_COOKIE
9.1.3 Beispiel: Sprachwechsler
9.1.4 Cookies mit Ablaufdatum
9.1.5 Cookies löschen
9.1.6 Cookies im Browser verwalten
9.2 Sessions: Benutzersitzungen
9.2.1 Eine Session starten
9.2.2 Eine Session wieder aufnehmen
9.2.3 Beispiel: Login
9.2.4 Beispiel: »Flash«-Nachrichten
9.3 Übungen
10 Einstieg in die objektorientierte Programmierung (OOP)
10.1 Grenzen der prozeduralen Programmierung
10.2 Grundbegriffe der »OOP«
10.2.1 Klasse (Class)
10.2.2 Objekt (Object)
10.2.3 Eigenschaft (Property)
10.2.4 Methode (Method)
10.2.5 Die spezielle Variable $this
10.2.6 Konstruktor: __construct()
10.2.7 Sichtbarkeit (Visibility)
10.2.8 Das Geheimnisprinzip: Daten kapseln
10.3 Vererbung
10.4 Ausnahmen (Exceptions)
10.5 Native Objektorientierung in PHP
10.5.1 Datum & Zeit: Prozedurale Programmierung
10.5.2 Datum & Zeit: Objektorientierte Programmierung
10.6 Übungen
11 Datenverwaltung mit MySQL
11.1 Was ist eine relationale Datenbank?
11.2 Was ist ein Datenbankmanagementsystem?
11.3 Was ist SQL?
11.4 Erste Schritte mit MySQL
11.4.1 Warum MySQL?
11.4.2 MySQL installieren
11.4.3 Verbindung zu MySQL aufnehmen und erste Befehle ausführen
11.5 Kommentare
11.6 Datenbanken
11.6.1 Datenbank erzeugen
11.6.2 Datenbank löschen
11.7 Tabellen
11.7.1 Tabelle anlegen
11.7.2 Spaltentypen
11.7.3 Spaltenoptionen
11.7.4 Tabellenstruktur anzeigen
11.7.5 Tabellen löschen
11.8 Bezeichner
11.8.1 Gültige Bezeichner
11.8.2 Punkt-Notation
11.9 Daten schreiben, lesen, ändern und löschen
11.9.1 Daten einfügen: INSERT INTO
11.9.2 Daten abfragen: SELECT
11.9.3 Daten ändern: UPDATE
11.9.4 Daten löschen: DELETE
11.10 Übungen
12 Fortgeschrittene Datenbankabfragen mit MySQL
12.1 Grafische Datenbankverwaltung mit phpMyAdmin
12.2 MySQL beim Webhoster
12.3 Fortgeschrittene Datenabfragen
12.3.1 Vergleichsoperatoren
12.3.2 Logische Verknüpfungen
12.3.3 LIMIT: Abfrageergebnisse begrenzen
12.4 Alias-Namen für Tabellenspalten
12.5 SQL-Funktionen
12.5.1 Skalare Funktionen
12.5.2 Daten zusammenfassen: Aggregatfunktionen
12.6 Performance und Indizes
12.7 Übungen
13 PHP und MySQL kombinieren
13.1 PHP mit MySQL verbinden
13.1.1 Datenbankverbindung mit PDO
13.1.2 Verbindung mit MySQL herstellen
13.1.3 SQL-Befehle ausführen
13.2 Beispiel: MySQL-Version abfragen
13.3 Beispiel: Benutzer-Accounts
13.3.1 Benutzer-Tabelle anlegen
13.3.2 Benutzer registrieren
13.3.3 Login
13.3.4 Login-Bereich
13.4 Passwörter sicher speichern
13.4.1 Passwort-Hash erzeugen
13.4.2 Passwort validieren
13.5 Sicherheitslücke: SQL-Injection
13.6 Übungen
14 Abschlussprojekt: Ein Blog programmieren
14.1 Installation
14.2 Übersicht: Das fertige Blog
14.3 Verwendete Techniken
14.3.1 Webdesign mit »Bootstrap«
14.3.2 Methodenaufrufe verketten
14.3.3 Letzte eingefügte Datensatz-ID ermitteln
14.3.4 POST-Anfrage erkennen
14.3.5 Versteckte Formularfelder
14.3.6 Composer
14.4 So funktioniert das Blog
14.4.1 Verzeichnisstruktur
14.4.2 Die verschiedenen Webseiten
14.4.3 Initialisierungsaufgaben
14.5 Anwendungsbeispiele
14.5.1 Startseite mit Artikelübersicht
14.5.2 Artikel anlegen
14.5.3 Artikel als PDF downloaden
14.5.4 Feedback als E-Mail versenden
14.6 Ausblick: Was kommt als Nächstes?
14.6.1 Namespaces (Namensräume)
14.6.2 Fortgeschrittene Entwicklungsumgebung mit XAMPP
14.6.3 Reguläre Ausdrücke
14.6.4 Frameworks
14.6.5 PHP-Standardsoftware: Content Management und Co.
14.6.6 Versionsverwaltung mit git und GitHub
14.6.7 Testing mit PHPUnit
14.7 Übungen
Mit diesem Buch haben Sie sich für einen einfachen, praktischen und fundierten Einstieg in die Welt der Programmierung entschieden. Sie lernen ohne unnötigen Ballast alles, was Sie wissen müssen, um PHP und MySQL effektiv für Projekte in Ihrem Berufs- und Interessensgebiet einzusetzen.
Wenn Sie Zeit genug haben, können Sie jeden Tag ein neues Kapitel durcharbeiten und so innerhalb von zwei Wochen Programmieren lernen. Alle Erklärungen sind leicht verständlich und setzen keine Vorkenntnisse voraus. Am besten lesen Sie das Buch neben der Computer-Tastatur und probieren die Programmbeispiele und Übungen gleich aus. Sie werden schnell erste Erfolge erzielen und Freude an der Programmierung finden.
Die Kapitel bauen Schritt für Schritt aufeinander auf. Das Buch beschreibt zunächst die Einsatzgebiete von PHP und die Einrichtung Ihres Computers zur Entwicklung des ersten PHP-Programms. Anschließend lernen Sie wichtige Sprachelemente und Einstellungen von PHP kennen. Sie werden vertraut mit der Verwendung von Funktionen, der Entwicklung und Veröffentlichung dynamischer Webseiten, dem Lesen und Schreiben von Dateien, der Anbindung eines externen Webservices sowie dem Einsatz von Cookies und Sessions. Nach einer Einführung in die objektorientierte Programmierung erlernen Sie den Umgang mit einem MySQL-Datenbanksystem und der Datenbanksprache SQL. Das letzte Kapitel vereint alles Gelernte in einem Projekt zur Programmierung eines Weblogs und gibt Anregungen zur Weiterentwicklung Ihrer Programmierkenntnisse nach dem Schnelleinstieg.
Gelegentlich stoßen Sie auf kleine Aufgaben oder Zwischenfragen, die als Lernaktivierung gedacht sind. Ihr Tagespensum schließt mit praktischen Programmierübungen, in denen Sie Ihr neu gewonnenes Wissen vertiefen können. Die Lösungen zu diesen Übungen und die Antworten zu den Zwischenfragen stehen in einem Online-Kapitel zum Download zur Verfügung. Mehr dazu im nächsten Abschnitt.
Am Ende des Buchs finden Sie ein Stichwortverzeichnis, das Ihnen hilft, bestimmte Themen im Buch schneller zu finden.
Das Buch enthält viele kleine Beispielprogramme. Sie sind als »Starterprojekte« gedacht und sollen Sie ermuntern, den Code weiterzuentwickeln und selbst etwas Neues auszuprobieren.
Der Code aller Beispielprogramme sowie die Lösungen zu den Übungen und Zwischenfragen stehen Ihnen auf der Webseite des Verlags unter www.mitp.de/0395 zum Download zur Verfügung.
Dort finden Sie außerdem ein praktisches Glossar mit den wichtigsten Fachbegriffen.
Unsere Verlagsprodukte werden mit großer Sorgfalt erstellt. Sollten Sie trotzdem einen Fehler bemerken oder eine andere Anmerkung zum Buch haben, freuen wir uns über eine direkte Rückmeldung an lektorat@mitp.de.
Falls es zu diesem Buch bereits eine Errata-Liste gibt, finden Sie diese unter www.mitp.de/0395 im Reiter Downloads.
Wir wünschen Ihnen viel Erfolg und Spaß bei der Programmierung mit PHP und MySQL!
Philipp Rieber und das mitp-Lektorat