Programmieren lernen in PHP 5
Description
Alles über E-Books | Antworten auf Fragen rund um E-Books, Kopierschutz und Dateiformate finden Sie in unserem Info- & Hilfebereich.
More details
Other editions
Additional editions

Person
Content
2 - Vorwort [Seite 8]
3 - Inhaltsverzeichnis [Seite 10]
4 - 1 Vor dem Start [Seite 18]
4.1 - 1.1 Wer sind Sie? [Seite 20]
4.2 - 1.2 Hinweise zum Buch [Seite 20]
4.2.1 - 1.2.1 Schreibweisen im Buch [Seite 21]
4.2.2 - 1.2.2 Wichtige Symbole [Seite 21]
4.2.3 - 1.2.3 Was nicht aufgeführt wurde [Seite 21]
4.2.4 - 1.2.4 Navigationshilfen [Seite 22]
4.3 - 1.3 Installation [Seite 22]
4.3.1 - 1.3.1 LAMP [Seite 22]
4.3.2 - 1.3.2 WAMP [Seite 23]
4.3.3 - 1.3.3 WPMP [Seite 23]
4.3.4 - 1.3.4 WIMP [Seite 23]
4.3.5 - 1.3.5 Andere Server [Seite 23]
4.4 - 1.4 Softwarequellen [Seite 24]
4.5 - 1.5 Hilfe im Web [Seite 24]
4.6 - 1.6 Website zum Buch [Seite 25]
4.7 - 1.7 Welche PHP-Version? [Seite 25]
5 - 2 Dynamik in der Webseite [Seite 26]
5.1 - 2.1 HTML ist langweilig [Seite 28]
5.1.1 - 2.1.1 Mysterium CGI [Seite 28]
5.1.2 - 2.1.2 Was Webserver noch können [Seite 29]
5.1.3 - 2.1.3 Hochgesteckte Erwartungen [Seite 29]
5.2 - 2.2 Werden Sie ein guter Programmierer! [Seite 30]
5.2.1 - 2.2.1 Ein wenig Theorie [Seite 30]
5.2.2 - 2.2.2 Mit Paradigmen vom Problem zur Lösung [Seite 31]
5.2.3 - 2.2.3 Programmieren mit Stil [Seite 32]
5.3 - 2.3 PHP ist einfach [Seite 33]
5.3.1 - 2.3.1 Sofort etwas ausprobieren [Seite 33]
5.3.2 - 2.3.2 Wo wird programmiert? [Seite 34]
5.3.3 - 2.3.3 Wo wird PHP abgearbeitet? [Seite 34]
5.3.4 - 2.3.4 PHP und HTML [Seite 35]
5.4 - 2.4 Erstellen und Testen [Seite 39]
5.4.1 - 2.4.1 Sind Sie startklar? [Seite 39]
6 - 3 Variablen und Konstanten [Seite 46]
6.1 - 3.1 Variablen erzeugen und erkennen [Seite 48]
6.2 - 3.2 Datentypen [Seite 49]
6.2.1 - 3.2.1 Datentypen darstellen und erzwingen [Seite 50]
6.3 - 3.3 Variablen genauer betrachtet [Seite 52]
6.3.1 - 3.3.1 Verweise [Seite 53]
6.4 - 3.4 Konstanten [Seite 53]
6.4.1 - 3.4.1 Definition von Konstanten [Seite 54]
6.4.2 - 3.4.2 Vordefinierte Konstanten [Seite 55]
7 - 4 Rechnen und Verarbeiten [Seite 56]
7.1 - 4.1 Zeichenketten [Seite 58]
7.1.1 - 4.1.1 Zeichenkettenfunktionen [Seite 58]
7.1.2 - 4.1.2 Basiswissen für Zeichenketten [Seite 59]
7.1.3 - 4.1.3 Zeichenketten in der Praxis [Seite 64]
7.1.4 - 4.1.4 HTML problemlos verwenden [Seite 69]
7.2 - 4.2 Praktische Mathematik [Seite 72]
7.2.1 - 4.2.1 Operatoren [Seite 72]
7.2.2 - 4.2.2 Mathematische Funktionen [Seite 77]
7.2.3 - 4.2.3 Funktionen beliebiger Genauigkeit [Seite 81]
8 - 5 Komplexe Datenstrukturen: Arrays [Seite 84]
8.1 - 5.1 Wie Arrays funktionieren [Seite 86]
8.1.1 - 5.1.1 Eindimensionale Arrays [Seite 86]
8.1.2 - 5.1.2 Sprechende Indizes: Assoziative Arrays [Seite 89]
8.1.3 - 5.1.3 Mehrdimensionale Arrays [Seite 91]
8.1.4 - 5.1.4 Mehrdimensionale Arrays verarbeiten [Seite 92]
8.2 - 5.2 Die Arrayfunktionen [Seite 94]
8.3 - 5.3 Zugriff auf Array-Elemente [Seite 95]
8.3.1 - 5.3.1 Arrays durchlaufen [Seite 96]
8.3.2 - 5.3.2 Mit Arrays spielen [Seite 96]
8.3.3 - 5.3.3 Interessante Arrayeffekte [Seite 97]
9 - 6 Das Steuerrad für PHP: Kontrollstrukturen [Seite 100]
9.1 - 6.1 Übersicht [Seite 102]
9.1.1 - 6.1.1 Strukturiertes Programmieren [Seite 102]
9.1.2 - 6.1.2 Blöcke [Seite 104]
9.2 - 6.2 Verzweigungen [Seite 105]
9.2.1 - 6.2.1 Bedingungen [Seite 105]
9.2.2 - 6.2.2 Bedingungen mit if auswerten [Seite 107]
9.2.3 - 6.2.3 Mehrfachauswertungen mit switch [Seite 109]
9.3 - 6.3 Schleifen [Seite 111]
9.3.1 - 6.3.1 Standardschleifen mit while [Seite 111]
9.3.2 - 6.3.2 Die »Mindest-Schleife« mit do ... while [Seite 113]
9.3.3 - 6.3.3 Abzählbare Schleifen: for( [Seite 115]
9.3.4 - 6.3.4 Felder bestellen: foreach [Seite 117]
9.4 - 6.4 Ordnung ins Chaos: Funktionen [Seite 119]
9.4.1 - 6.4.1 Die Welt erschaffen: Funktionsdefinition [Seite 119]
9.4.2 - 6.4.2 Kleine Welten: Variablen in Funktionen [Seite 120]
9.5 - 6.5 Fehler einfangen: try@ catch [Seite 132]
9.5.1 - 6.5.1 Bei Fehler: Abbiegen [Seite 133]
9.5.2 - 6.5.2 Einfache Fehlerbehandlungen [Seite 134]
9.5.3 - 6.5.3 Fehlerunterdrückung mit @ [Seite 134]
10 - 7 Sammeltransporte: Objekte [Seite 138]
10.1 - 7.1 Einführung in die Welt der Objekte [Seite 140]
10.1.1 - 7.1.1 Das Konzept [Seite 140]
10.1.2 - 7.1.2 Das erste Objekt [Seite 141]
10.2 - 7.2 Erweiterte Techniken für Objekte [Seite 144]
10.2.1 - 7.2.1 Direkter Zugriff auf Klassen [Seite 144]
10.2.2 - 7.2.2 Konstruktoren und Destruktoren [Seite 145]
10.2.3 - 7.2.3 Vererbung und Schnittstellen [Seite 147]
10.3 - 7.3 Spezielle Funktionen [Seite 149]
10.3.1 - 7.3.1 Methoden aufrufen [Seite 149]
10.3.2 - 7.3.2 Eigenschaften von Klassen ermitteln [Seite 150]
10.4 - 7.4 Klassenpraxis [Seite 151]
10.4.1 - 7.4.1 Herausforderung: Grafik selbstgebaut [Seite 151]
10.5 - 7.5 Eingebaut: Die Fehlerklassen [Seite 156]
10.5.1 - 7.5.1 Die Klasse Exception [Seite 156]
10.5.2 - 7.5.2 Praktischer Einsatz der Fehlerbehandlung [Seite 158]
11 - 8 Daten bewegen: Dateisystem und FTP [Seite 162]
11.1 - 8.1 Dateisystem [Seite 164]
11.1.1 - 8.1.2 Zugriff auf Dateien [Seite 165]
11.1.2 - 8.1.3 Mit Dateien arbeiten [Seite 180]
11.2 - 8.2 Umgang mit Verzeichnissen [Seite 182]
11.2.1 - 8.2.1 Basisfunktionen [Seite 182]
11.2.2 - 8.2.2 Im Verzeichnissystem bewegen [Seite 182]
11.3 - 8.3 Verbindungen zu Servern [Seite 184]
11.3.1 - 8.3.1 HTTP-Verbindungen [Seite 184]
11.3.2 - 8.3.2 FTP-Verbindungen mit Dateifunktionen [Seite 187]
11.4 - 8.4 FTP-Funktionen [Seite 188]
11.4.1 - 8.4.1 Verbindung zu FTP-Servern [Seite 188]
11.4.2 - 8.4.2 Navigation im Verzeichnisbaum [Seite 191]
12 - 9 Daten aus dem Browser: Formulare und Links [Seite 196]
12.1 - 9.1 Daten aus einem Formular ermitteln [Seite 198]
12.1.1 - 9.1.1 Formulare in HTML erstellen [Seite 198]
12.1.2 - 9.1.2 Formularelemente analysieren [Seite 203]
12.1.3 - 9.1.3 Dateiupload [Seite 208]
12.2 - 9.2 Daten per URL weiterreichen [Seite 214]
12.2.1 - 9.2.1 Wie werden Daten weitergereicht? [Seite 214]
12.2.2 - 9.2.2 Probleme mit der Datenübertragung [Seite 216]
12.3 - 9.3 Daten über den Server ermitteln [Seite 220]
12.3.1 - 9.3.1 Servervariablen ermitteln [Seite 220]
12.3.2 - 9.3.2 Übersicht Servervariablen [Seite 221]
13 - 10 Big Brother: Sessions und Cookies [Seite 224]
13.1 - 10.1 Wozu dienen Sessions? [Seite 226]
13.2 - 10.2 Sessionmanagement [Seite 227]
13.2.1 - 10.2.1 Wie Sessions funktionieren [Seite 227]
13.2.2 - 10.2.2 Ausblick [Seite 240]
13.3 - 10.3 Cookies [Seite 242]
13.3.1 - 10.3.1 Einführung in Cookies [Seite 242]
13.3.2 - 10.3.2 Cookies mit PHP verarbeiten [Seite 245]
14 - 11 Datenbanken: So werden Daten gespeichert [Seite 250]
14.1 - 11.1 Vorbemerkungen [Seite 252]
14.2 - 11.2 Ganz universell: SQL [Seite 252]
14.2.1 - 11.2.1 Grundsätzliche Konzepte [Seite 252]
14.2.2 - 11.2.2 Vorbereitungen [Seite 258]
14.3 - 11.3 Mit MySQL arbeiten [Seite 260]
14.3.1 - 11.3.1 Datenbanken und Tabellen erzeugen [Seite 260]
14.3.2 - 11.3.2 Mit Datenbanken arbeiten [Seite 262]
14.3.3 - 11.3.3 Weitere Tabellenfunktionen [Seite 269]
14.3.4 - 11.3.4 Die MySQL-Funktionen [Seite 270]
14.3.5 - 11.3.5 PHP-Funktionen für MySQL [Seite 270]
14.4 - 11.4 MySQL ganz praktisch [Seite 272]
14.4.1 - 11.4.1 Vorbereiten des Projekts [Seite 272]
14.4.2 - 11.4.2 Aufbau der Skripte [Seite 273]
14.4.3 - 11.4.3 Die Skripte im Detail [Seite 273]
14.4.4 - 11.4.4 Diskussion der Idee [Seite 284]
14.5 - 11.5 SQLite kurz vorgestellt [Seite 285]
14.5.1 - 11.5.1 Der SQLite SQL-Dialekt [Seite 285]
14.5.2 - 11.5.2 Die SQLite-Funktionen [Seite 289]
14.6 - 11.6 SQLite ganz praktisch [Seite 291]
14.6.1 - 11.6.1 Das Projekt vorbereiten [Seite 291]
14.6.2 - 11.6.2 Der Quellcode [Seite 292]
14.6.3 - 11.6.3 Diskussion [Seite 297]
15 - 12 Symbiose: PHP und JavaScript [Seite 298]
15.1 - 12.1 Warum JavaScript? [Seite 300]
15.1.1 - 12.1.1 Prinzipielle Fragen zu JavaScript [Seite 300]
15.1.2 - 12.1.2 JavaScript erkennen [Seite 301]
15.2 - 12.2 Umgang mit Formularen [Seite 303]
15.2.1 - 12.2.1 Projekt: Eine Abstimmungssite [Seite 303]
15.3 - 12.3 Gutes Zusammenspiel: Der Chat [Seite 307]
15.3.1 - 12.3.1 Vorbereitung: Die Datenbank [Seite 307]
15.3.2 - 12.3.2 Mehr Leistung durch JavaScript [Seite 312]
16 - 13 1000 kleine Helfer: Die PHP- Funktionen [Seite 314]
16.1 - 13.1 Übersicht [Seite 316]
16.2 - 13.2 Hilfsdesigner: Bildfunktionen mit GD2 [Seite 316]
16.2.1 - 13.2.1 Bilddaten dynamisch erzeugen [Seite 316]
16.2.2 - 13.2.2 Bilder dynamisch erzeugen [Seite 317]
16.2.3 - 13.2.3 Umgang mit Fehlern [Seite 321]
16.2.4 - 13.2.4 Weitere Bildfunktionen [Seite 322]
16.3 - 13.3 Suchexperten: Reguläre Ausdrücke [Seite 324]
16.3.1 - 13.3.1 Kennen Sie Perl? [Seite 324]
16.3.2 - 13.3.2 Überall reguläre Ausdrücke [Seite 324]
16.3.3 - 13.3.3 Erstellen einfacher Muster [Seite 329]
16.3.4 - 13.3.4 Vom Einfachen zum Komplexen [Seite 330]
16.3.5 - 13.3.5 Suchen und Ersetzen [Seite 333]
16.3.6 - 13.3.6 Alle Metazeichen auf einen Blick [Seite 334]
16.3.7 - 13.3.7 Funktionen für reguläre Ausdrücke [Seite 336]
16.4 - 13.4 Zeitwächter: Datumsfunktionen [Seite 337]
16.4.1 - 13.4.1 Probleme mit Datumswerten [Seite 337]
16.4.2 - 13.4.2 Datumsfunktionen [Seite 338]
17 - 14 Fehlersuche und Konfiguration [Seite 348]
17.1 - 14.1 Die Informationszentrale [Seite 350]
17.2 - 14.2 Konfiguration mit »php.ini« [Seite 351]
17.3 - 14.3 Tipps zur Fehlersuche [Seite 362]
17.4 - 14.4 Typische Fehler [Seite 362]
17.4.1 - 14.4.1 Verwendung von printf und print [Seite 362]
17.4.2 - 14.4.2 Missbrauch des Variablenersatzes [Seite 363]
17.4.3 - 14.4.3 Umgang mit Variablen [Seite 363]
17.4.4 - 14.4.4 Paradigmen und deren Gültigkeit [Seite 364]
17.4.5 - 14.4.5 Missverstandene Kontrollstrukturen [Seite 364]
17.4.6 - 14.4.6 Fehler beim Umgang mit Datenbanken [Seite 364]
18 - Anhang [Seite 366]
18.1 - A Listings [Seite 368]
18.2 - B Quickreferenz MySQL 4 [Seite 374]
18.3 - C Empfehlungen [Seite 388]
18.4 - D Index [Seite 392]
18.5 - E An den Autor [Seite 400]
Bevor Sie beginnen, die ersten Skripte zu schreiben, denken Sie einen Moment darüber nach, wie ein Webserver arbeitet. Wenn Sie den Browser öffnen, und eine Adresse eingeben, zerlegt der Browser diese zuerst in zwei Teile. Betrachten Sie folgende Adresse:
http://www.php.comzept.de/php-lernen/index.php
Diese Angabe besteht zum einen aus dem Protokoll: http. Dies steht für Hypertext Transfer Protocol und definiert die »Sprache«, in der Webserver und Browser miteinander reden. Danach folgt die Adresse des Servers, bestehend aus seinem eigenen Namen »www.php« und der Domäne »comzept.de«. Dieser Name wird zuerst in eine IP-Nummer, die weltweit eindeutig ist, aufgelöst. Das passiert aber transparent im Hintergrund und wird normalerweise vom Benutzer nicht wahrgenommen. Der dritte Teil enthält nun Pfad- und Dateiangaben, hier »phplernen/ index.php«. Diesen Teil sendet der Browser mit dem entsprechenden HTTP-Kommando GET an den Server. Der reagiert darauf entweder mit der Auslieferung der angeforderten Datei oder einer Fehlerinformation, wenn die Datei nicht gefunden wurde.
So war das Web ursprünglich konzipiert worden. HTML-Seiten sollten nur durch Hyperlinks verbunden werden. Das genügte, um Informationen strukturiert darzustellen und Designern eine gewisse Freiheit bei der Darstellung zu erlauben.
2.1.1 Mysterium CGI
Das Ziel einer solchen Anforderung kann auch ein Skript auf dem Webserver sein. Der Webserver ruft dann das mit der Dateierweiterung verbundene Programm auf. Dessen Ausgabe wiederum wird an den Browser gesendet. Praktisch können Sie also mit einem Skript alles kontrollieren was zum Browser geht. Die Schnittstelle zwischen Webserver und solchen Programmen zur Ausführung von Skripten ist sehr alt, sehr gut dokumentiert, sehr bekannt und sehr langsam. Ihr Name ist CGI - Common Gateway Interface. CGI selbst macht nichts. Die erste Skriptsprache, die sich CGI bediente, war Perl. Perl ist sehr weit verbreitet und kann virtuos mit Zeichen umgehen. Leider ist Perl auch sehr schwer zu erlernen und für Anfänger nicht zu empfehlen.
Mit CGI ist es möglich, die Anforderungen eines Browsers auf ein Skript umzuleiten. Solche Anforderungen können neben der Adresse einer Datei auch die Inhalte eines Formulars sein. Damit besteht nun die Möglichkeit, den Inhalt eines Formulars, das der Benutzer ausgefüllt hat, zu verarbeiten und darauf gezielt zu reagieren. Diese Reaktion kann sehr vielfältig ausfallen. Sie können das CGI-Skript veranlassen, die Daten zu überprüfen und dem Benutzer eine Fehlermeldung zurückzusenden, wenn er etwas vergessen hat. Oder Sie legen die Daten in einer Textdatei ab, die Sie sich später anschauen. Wenn Sie schon etwas professioneller programmieren, werden Sie dagegen eine Datenbank verwenden.
Über CGI wurden viele Dinge geschrieben. Ein wichtiger Kritikpunkt ist die Geschwindigkeit. CGI startet mit jeder Anforderung einen so genannten Prozess auf dem Server, also eine Instanz des Skript-Interpreters. Wenn gleichzeitig 50 Benutzer zugreifen, werden 50 Instanzen gestartet, jede mit einigen Megabyte Speicherverbrauch. Ganz realistisch muss man heute sagen, hat die Entwicklung der Hardwareressourcen diesen Nachteil fast beseitigt. 50 Megabyte Speicher sind sehr wenig und 50 gleichzeitige Besucher sind verdammt viel. PHP kann man deshalb gut - sowohl auf der Entwicklungsmaschine auch auf einem Server im Netzwerk, als CGI-Applikation laufen lassen. Damit ist auch klar, das CGI nicht gleich Perl ist, in diesem Buch ist CGI gleich PHP.
Ein anderer Nachteil ist die Arbeitsweise des Protokolls HTTP. Jede Anforderung des Browsers ist ein für sich abgeschlossener Prozess. Da CGI den Interpreter jedes mal startet und danach wieder aus dem Speicher entfernt, gehen auch alle Einstellungen verloren. Das »Wiedererkennen« des Benutzers auf der nächsten Seite stellt deshalb ein Problem dar. Dank PHP stehen dafür aber spezielle Funktionen zur Verfügung - die Sessionfunktionen. Darauf wird selbstverständlich detailliert eingegangen. Also ist auch dieser Nachteil nicht wirklich schlimm.
2.1.2 Was Webserver noch können
Webserver bieten eigene Schnittstellen. Diese sind - im Gegensatz zu CGI - von Server zu Server verschieden. Glücklicherweise gibt es heute nicht mehr sehr viele konkurrierende Webserver. In der PHP-Welt, wo Produktionsserver überwiegend unter Linux laufen und für Entwicklungsumgebungen Windows verwendet wird, dominiert der Apache Webserver, gefolgt von dem Internet Information Server von Microsoft. Beide eignen sich für den Betrieb von PHP und für beide gibt es neben der CGIVersion auch eine spezielle Variante, die auf die jeweiligen proprietären Schnittstellen zugreift. Damit beschäftigt sich dieses Buch aber nicht, weil es nicht beim Programmieren hilft und meist keinen Unterschied macht, ob das Skript mit einer Webserverschnittstelle oder CGI läuft. Die zusätzlichen Möglichkeiten der Webserverschnittstellen mögen Profis zu schätzen wissen, die eigene Server betreiben und ihre Applikationen darauf optimieren. Wenn Sie mit Ihren Skripten zu irgendeinem Provider gehen, werden Sie jedoch oft auf Server mit CGI treffen und solche optimierten Skripten funktionieren dann nicht. Beschäftigen Sie sich damit erst, wenn Sie PHP richtig gut können und ein eigener Server zur Verfügung steht.
System requirements
File format: PDF
Copy protection: Watermark-DRM (Digital Rights Management)
System requirements:
- Computer (Windows; MacOS X; Linux): Use the free software Adobe Reader, Adobe Digital Editions, or any other PDF viewer of your choice (see eBook Help).
- Tablet/Smartphone (Android; iOS): Install the free app Adobe Digital Editions or another reading app for eBooks, e.g., PocketBook (see eBook Help).
- E-reader: Bookeen, Kobo, Pocketbook, Sony, Tolino and many more (only limited: Kindle).
The file format PDF always displays a book page identically on any hardware. This makes PDF suitable for complex layouts such as those used in textbooks and reference books (images, tables, columns, footnotes). Unfortunately, on the small screens of e-readers or smartphones, PDFs are rather annoying, requiring too much scrolling.
This eBook uses Watermark-DRM, a „soft” copy protection. This means that there are no technical restrictions to prevent illegal distribution. However, there is a personalised watermark embedded in the eBook that can be used to identify the purchaser of the eBook in the event of misuse and to provide evidence for legal purposes.
For more information, see our eBook Help page.