Jan Teriete Grundlagen der PHP7-Programmierung · PHP-Datentypen 62 Das Problem 62 Die Funktion...

22
Jan Teriete Grundlagen der PHP7-Programmierung Ein Webmasters Press Lernbuch Version 8.1.1 vom 16.07.2020 Autorisiertes Curriculum für das Webmasters Europe Ausbildungs- und Zertifizierungsprogramm — www.webmasters-europe.org —

Transcript of Jan Teriete Grundlagen der PHP7-Programmierung · PHP-Datentypen 62 Das Problem 62 Die Funktion...

Page 1: Jan Teriete Grundlagen der PHP7-Programmierung · PHP-Datentypen 62 Das Problem 62 Die Funktion gettype() 62 NULL 62 Boolean 63 Grundlagen 63 isset() und unset() 63 empty() 64 Integer

Jan Teriete

Grundlagen der PHP7-ProgrammierungEin Webmasters Press Lernbuch

Version 8.1.1 vom 16.07.2020

Autorisiertes Curriculum für das Webmasters Europe Ausbildungs- und Zertifizierungsprogramm

— www.webmasters-europe.org —

Page 2: Jan Teriete Grundlagen der PHP7-Programmierung · PHP-Datentypen 62 Das Problem 62 Die Funktion gettype() 62 NULL 62 Boolean 63 Grundlagen 63 isset() und unset() 63 empty() 64 Integer

Inhaltsverzeichnis17Einführung

17Für wen diese Class gedacht ist

17Vorkenntnisse

18Aufbau der Lektionen

18Code-Listings im Text

18»Testen Sie Ihr Wissen!«

18»Übungen«

18»Optionale Übungen«

19Formale Anforderungen

19Systemanforderungen

19PHP-fähiger Webserver

19Code-Editor

20Webbrowser

20Zusammenfassung

21Dynamische Webseiten mit PHP

21Was sind dynamische Webseiten?

21Statische Webseiten

21Dynamische Webseiten

22Vorteile dynamischer Webseiten

22Nachteile dynamischer Webseiten

22Die Auslieferung von Webseiten

23PHP

23Stärken von PHP

24Geschichte von PHP

27Zusammenfassung

28HTML und PHP

28Das Problem

28PHP in eine HTML-Seite einbetten

28Eine statische HTML-Seite erstellen

28PHP-Code einfügen

29PHP erzeugt HTML

30Die sieben berühmten Fehler

30PHP-Code im HTML-Bereich schreiben

30HTML-Code im PHP-Bereich schreiben

31Die PHP-Datei hat die Endung .html

31Die PHP-Datei liegt nicht im Zugriff des Webservers

31Die PHP-Datei wurde direkt im Browser geöffnet

32Die echo-Anweisung fehlt

32Das Leerzeichen wurde vergessen

33Mehrzeilige PHP-Anweisungen

33Das Semikolon

33Mehrzeilige PHP-Anweisungen

34Stilfragen

34Saubere Trennung von HTML und PHP

36Einrückungen

37Zusammenfassung

1

1.1

1.2

1.3

1.3.1

1.3.2

1.3.3

1.3.4

1.4

1.4.1

1.4.2

1.4.3

1.4.4

1.5

2

2.1

2.1.1

2.1.2

2.1.3

2.1.4

2.1.5

2.2

2.2.1

2.2.2

2.3

3

3.1

3.2

3.2.1

3.2.2

3.2.3

3.3

3.3.1

3.3.2

3.3.3

3.3.4

3.3.5

3.3.6

3.3.7

3.4

3.4.1

3.4.2

3.5

3.5.1

3.5.2

3.6

Page 3: Jan Teriete Grundlagen der PHP7-Programmierung · PHP-Datentypen 62 Das Problem 62 Die Funktion gettype() 62 NULL 62 Boolean 63 Grundlagen 63 isset() und unset() 63 empty() 64 Integer

37Testen Sie Ihr Wissen!

37Übungen

38Optionale Übungen

39Variablen und Operatoren

39Das Problem

39Variablen

39Grundlagen

39Der Zuweisungsoperator

40Zahlen

40Zeichenketten

40Der null-Wert

41Variableninhalte auslesen

41Benennung von Variablen

43Kommentare in PHP einbetten

43Grundlagen

43Einzeilige Kommentare

43Mehrzeilige Kommentare

44Operatoren

44Grundlagen

44Rechenoperatoren

46Weitere Rechenoperatoren

46Der Verknüpfungs-Operator

47Kombinierte Operatoren

48Inkrement und Dekrement-Operatoren

49Zusammenfassung

49Testen Sie Ihr Wissen!

50Übungen

50Optionale Übungen

52PHP-Funktionen

52Das Problem

52Aufgabe von Funktionen

52Funktionen aufrufen

52Grundlagen

53Fehlerhafter Funktionsaufruf

53Fehlerausgabe aktivieren

54Parameter an Funktionen übergeben

54Rückgabewerte von Funktionen

54Grundlagen

55Rückgabewerte ausgeben

55Rückgabewerte in Variablen speichern

55Funktionen mit mehreren Parametern

56Die PHP-Funktionsreferenz

56Grundlagen

57Suchen und browsen auf php.net

57Funktionsdefinitionen lesen

60Zusammenfassung

60Testen Sie Ihr Wissen!

61Übungen

61Optionale Übungen

3.7

3.8

3.9

4

4.1

4.2

4.2.1

4.2.2

4.2.3

4.2.4

4.2.5

4.2.6

4.2.7

4.3

4.3.1

4.3.2

4.3.3

4.4

4.4.1

4.4.2

4.4.3

4.4.4

4.4.5

4.4.6

4.5

4.6

4.7

4.8

5

5.1

5.2

5.3

5.3.1

5.3.2

5.3.3

5.4

5.5

5.5.1

5.5.2

5.5.3

5.6

5.7

5.7.1

5.7.2

5.7.3

5.8

5.9

5.10

5.11

Page 4: Jan Teriete Grundlagen der PHP7-Programmierung · PHP-Datentypen 62 Das Problem 62 Die Funktion gettype() 62 NULL 62 Boolean 63 Grundlagen 63 isset() und unset() 63 empty() 64 Integer

62PHP-Datentypen

62Das Problem

62Die Funktion gettype()

62NULL

63Boolean

63Grundlagen

63isset() und unset()

64empty()

67Integer

67Grundlagen

68is_int()

69intval()

70Float/Double

70Grundlagen

71is_float()

71floatval()

71String

71Grundlagen

71Bedeutung der Anführungszeichen

73is_string()

73strval()

73strlen()

74Weitere Datentypen

74Array

74Object

74Resource

74Type Casting

75Dynamische Typumwandlung

75Grundlagen

75Mathematische Operatoren

76Der Verknüpfungs-Operator

77Nicht-boolesche Wahrheitswerte

78Zusammenfassung

78Testen Sie Ihr Wissen!

79Übungen

80Optionale Übungen

81Arrays

81Das Problem

81Grundlagen

81Mit Arrays arbeiten

81Erzeugen mit eckigen Klammern

82Auslesen von Werten

83Erzeugen mit explizitem Index

84Erzeugen mittels array()

85Erzeugen mittels kurzer Array-Syntax

86Assoziative Arrays

86Grundlagen

86Der Doppelpfeil-Operator (=>)

87Nützliche Array-Funktionen

87is_array()

88count()

88var_dump()

6

6.1

6.2

6.3

6.4

6.4.1

6.4.2

6.4.3

6.5

6.5.1

6.5.2

6.5.3

6.6

6.6.1

6.6.2

6.6.3

6.7

6.7.1

6.7.2

6.7.3

6.7.4

6.7.5

6.8

6.8.1

6.8.2

6.8.3

6.9

6.10

6.10.1

6.10.2

6.10.3

6.10.4

6.11

6.12

6.13

6.14

7

7.1

7.2

7.3

7.3.1

7.3.2

7.3.3

7.3.4

7.3.5

7.4

7.4.1

7.4.2

7.5

7.5.1

7.5.2

7.5.3

Page 5: Jan Teriete Grundlagen der PHP7-Programmierung · PHP-Datentypen 62 Das Problem 62 Die Funktion gettype() 62 NULL 62 Boolean 63 Grundlagen 63 isset() und unset() 63 empty() 64 Integer

89in_array()

89array_pop()

90array_shift()

91Zusammenfassung

91Testen Sie Ihr Wissen!

92Übungen

92Optionale Übungen

94Formulare und Links

94Das Problem

94Informationen an PHP-Skripte übergeben

94Parameter über HTML-Links übergeben

94Aufbau von URLs

95URL-Parameter in PHP auslesen

96Zweck von URL-Parametern

97Parameter durch HTML-Formulare übergeben

97Grundlagen

98Der Form-Tag

100Formulardaten auslesen

100Formularelemente

107Das Array $_REQUEST

107Grundlagen

107$_REQUEST oder $_POST?

108Zusammenfassung

108Testen Sie Ihr Wissen!

108Übungen

109Optionale Übungen

110Funktionsentwurf

110Das Problem

110Funktionen definieren

110Funktionskopf

111Funktionskörper

111Selbst geschriebene Funktionen aufrufen

112Funktionen in Funktionen aufrufen

112Namenskonventionen

113Zusammenfassung

113Testen Sie Ihr Wissen!

113Übungen

115Strukturierung von PHP-Skripten

115PHP-Code strukturieren

116Dreiteilung des PHP-Codes

116Grundlagen

119Namensgebung

119Variablen

120Funktionen

120Auslagern von Funktionen

120Konzept

120require_once

121require

122include(_once)

123Namens- und andere Konventionen

7.5.4

7.5.5

7.5.6

7.6

7.7

7.8

7.9

8

8.1

8.2

8.3

8.3.1

8.3.2

8.3.3

8.4

8.4.1

8.4.2

8.4.3

8.4.4

8.5

8.5.1

8.5.2

8.6

8.7

8.8

8.9

9

9.1

9.2

9.2.1

9.2.2

9.2.3

9.3

9.4

9.5

9.6

9.7

10

10.1

10.2

10.2.1

10.3

10.3.1

10.3.2

10.4

10.4.1

10.4.2

10.4.3

10.4.4

10.4.5

Page 6: Jan Teriete Grundlagen der PHP7-Programmierung · PHP-Datentypen 62 Das Problem 62 Die Funktion gettype() 62 NULL 62 Boolean 63 Grundlagen 63 isset() und unset() 63 empty() 64 Integer

124Zusammenfassung

124Testen Sie Ihr Wissen!

125Übungen

125Optionale Übungen

126Verzweigungen

126Das Problem

126Boolesche Logik

126Konzept

126Vergleichsoperatoren

134Boolesche Ausdrücke modifizieren

139Wahrheitswerte aus anderen Quellen

140if-Anweisung

140Grundlagen

141Reine if-Anweisung

142if-else

143if-elseif-else

146Alternativen zur if-Anweisung

146Grundlagen

146switch-Anweisung

150Der ternäre Operator

152Der Null-Coalesce-Operator

154Zusammenfassung

154Testen Sie Ihr Wissen!

155Übungen

157Schleifen

157Das Problem

158Schleifen

158foreach-Schleife

158Grundlagen

159foreach zur formatierten Ausgabe von HTML

160Über Schlüssel und Werte iterieren

161for-Schleife

161Grundlagen

162Die Startanweisung

162Die Abbruchbedingung

162Der Modifikator

163Der Schleifenkörper

163Anwendungen

166while-Schleife

166Grundlagen

167Anwendung

168Endlos-Schleifen

169Zusammenfassung

169Testen Sie Ihr Wissen!

170Übungen

171Optionale Übungen

172Funktionen mit Parametern und Rückgabewerten

172Das Problem

172Parameter an Funktionen übergeben

172Geltungsbereiche von Variablen

10.5

10.6

10.7

10.8

11

11.1

11.2

11.2.1

11.2.2

11.2.3

11.2.4

11.3

11.3.1

11.3.2

11.3.3

11.3.4

11.4

11.4.1

11.4.2

11.4.3

11.4.4

11.5

11.6

11.7

12

12.1

12.2

12.3

12.3.1

12.3.2

12.3.3

12.4

12.4.1

12.4.2

12.4.3

12.4.4

12.4.5

12.4.6

12.5

12.5.1

12.5.2

12.6

12.7

12.8

12.9

12.10

13

13.1

13.2

13.2.1

Page 7: Jan Teriete Grundlagen der PHP7-Programmierung · PHP-Datentypen 62 Das Problem 62 Die Funktion gettype() 62 NULL 62 Boolean 63 Grundlagen 63 isset() und unset() 63 empty() 64 Integer

173Übergabe von Parametern

174Übergabe mehrerer Parameter

176Parameter mit Standardwerten

177Werte aus einer Funktion zurückgeben

177Konzept

177return

178Einen Wert zurückgeben

179Mehrere Werte als Array zurückgeben

180Zusammenfassung

180Testen Sie Ihr Wissen!

181Übungen

182Optionale Übungen

183Mehrdimensionale Arrays

183Das Problem

183Konzept

183Zweidimensionale Arrays

183Zweidimensionale Arrays erzeugen

184Zweidimensionale Arrays auslesen

184Formatierung

186Mehrdimensionale Arrays

187Verschachtelte foreach-Schleifen

189Zusammenfassung

189Testen Sie Ihr Wissen!

190Übungen

191Optionale Übungen

192Stringbehandlung

192Das Problem

192Strings formatieren

192Grundlagen

192trim()

193strtoupper()

193strtolower()

195ucfirst()

195htmlspecialchars()

198Datum und Uhrzeit formatieren

198Das Problem

199Der Timestamp

199time()

199strftime()

201mktime()

204strtotime()

205Strings durchsuchen

205Grundlagen

205strlen()

207strpos()

208Strings bearbeiten

208Grundlagen

208substr()

209str_replace()

211Zusammenfassung

212Testen Sie Ihr Wissen!

13.2.2

13.2.3

13.2.4

13.3

13.3.1

13.3.2

13.3.3

13.3.4

13.4

13.5

13.6

13.7

14

14.1

14.2

14.3

14.3.1

14.3.2

14.3.3

14.4

14.5

14.6

14.7

14.8

14.9

15

15.1

15.2

15.2.1

15.2.2

15.2.3

15.2.4

15.2.5

15.2.6

15.3

15.3.1

15.3.2

15.3.3

15.3.4

15.3.5

15.3.6

15.4

15.4.1

15.4.2

15.4.3

15.5

15.5.1

15.5.2

15.5.3

15.6

15.7

Page 8: Jan Teriete Grundlagen der PHP7-Programmierung · PHP-Datentypen 62 Das Problem 62 Die Funktion gettype() 62 NULL 62 Boolean 63 Grundlagen 63 isset() und unset() 63 empty() 64 Integer

212Übungen

213Optionale Übungen

214Persistente Daten

214Das Problem

214Dateien als Speichermedium

214file_put_contents()

215file_get_contents()

215Speichern komplexer Datenstrukturen

216serialize()

216unserialize()

218Serialisierte Daten aktualisieren

218Das Problem

218Vorgehensweise

219Zusammenfassung

220Testen Sie Ihr Wissen!

220Übungen

220Optionale Übungen

221HTTP und PHP-Sessionverwaltung

221Das Problem

221Grundlagen des HTTP-Protokolls

223Anfrage des Clients (Request)

225Antwort des Servers (Response)

227Mit PHP HTTP-Header auslesen und manipulieren

227Grundlagen

227$_SERVER

229header()

230Manuell 404 Seiten ausliefern

231Einschränkungen des HTTP-Protokolls

232Sessions

232Die PHP-Sessionverwaltung

232Sessions eröffnen

233Daten in Sessions speichern

234Sessions beenden

235Zusammenfassung

235Testen Sie Ihr Wissen!

236Übungen

237Optionale Übungen

238Einige Tipps und Tricks aus der PHP-Kiste

238Das Problem

238Konstanten

238Prinzip

239Alternative Syntax

239Anwendung

240error_reporting()

240Das Problem

241Den Fehlerlevel einstellen

242Fehlermeldungen abschalten

242Alternative PHP-Syntax für HTML-Templates

242Warum eine andere Syntax?

243Die Syntax

15.8

15.9

16

16.1

16.2

16.2.1

16.2.2

16.3

16.3.1

16.3.2

16.4

16.4.1

16.4.2

16.5

16.6

16.7

16.8

17

17.1

17.2

17.2.1

17.2.2

17.3

17.3.1

17.3.2

17.3.3

17.3.4

17.4

17.5

17.6

17.6.1

17.6.2

17.6.3

17.7

17.8

17.9

17.10

18

18.1

18.2

18.2.1

18.2.2

18.2.3

18.3

18.3.1

18.3.2

18.3.3

18.4

18.4.1

18.4.2

Page 9: Jan Teriete Grundlagen der PHP7-Programmierung · PHP-Datentypen 62 Das Problem 62 Die Funktion gettype() 62 NULL 62 Boolean 63 Grundlagen 63 isset() und unset() 63 empty() 64 Integer

244Alternativ-Syntax Variablen-Ausgabe

244Zusammenfassung

245Testen Sie Ihr Wissen!

245Übungen

245Optionale Übungen

246Wir programmieren ein Weblog

246Das Projekt

246Grundlagen

246Ein wenig Make-up

249CSS

253Die Funktionen

254Testdaten

254Benutzer

254Einträge

257Die Startseite

257Inhalt

258Einträge auslesen

258Einträge formatiert anzeigen

259Menü oder Login-Formular

260Einloggen

260Inhalt

260Der Login

261Weiterleitung per header()

261Ausloggen

262Eintrag schreiben

262Inhalt

263Logintest

263Eintrags-Formular

263Hauptmenü

264Eintrag speichern

264Inhalt

265Login und POST-Test

265Eintrag-Array erstellen

265Neuen Eintrag speichern

266Eintrag formatiert anzeigen

266Zusammenfassung

266Übungen

266Optionale Übungen

268Einführung in PDO

268Das Problem

268Einführung in PDO

269Datenbank-Verbindung aufbauen

269Das PDO-Objekt

269Der DSN

270SQL-Anweisungen mit PDO ausführen

270PDO#query()

271PDO#errorInfo()

272Ergebnisse verarbeiten: Die Klasse PDOStatement

276PDO-Attribute

276PDO-Attribute beim Erzeugen des PDO-Objekts setzen

276Fehlerverhalten einstellen (PDO::ATTR_ERRMODE)

18.4.3

18.5

18.6

18.7

18.8

19

19.1

19.1.1

19.1.2

19.1.3

19.2

19.3

19.3.1

19.3.2

19.4

19.4.1

19.4.2

19.4.3

19.4.4

19.5

19.5.1

19.5.2

19.5.3

19.6

19.7

19.7.1

19.7.2

19.7.3

19.7.4

19.8

19.8.1

19.8.2

19.8.3

19.8.4

19.8.5

19.9

19.10

19.11

20

20.1

20.2

20.3

20.3.1

20.3.2

20.4

20.4.1

20.4.2

20.4.3

20.5

20.5.1

20.5.2

Page 10: Jan Teriete Grundlagen der PHP7-Programmierung · PHP-Datentypen 62 Das Problem 62 Die Funktion gettype() 62 NULL 62 Boolean 63 Grundlagen 63 isset() und unset() 63 empty() 64 Integer

277Fetch-Modus (PDO::ATTR_DEFAULT_FETCH_MODE)

278Gepufferte Abfragen (PDO::MYSQL_ATTR_USE_BUFFERED_QUERY)

280Vorschlag für eine Standard-PDO-Verbindung

281MySQL und Unicode

281Unicode-konforme Tabellen erzeugen

281Unicode-Daten aus MySQL auslesen

282Testen Sie Ihr Wissen!

282Übungen

284PDO in der Praxis

284Prepared Statements

284Einführung in Prepared Statements

285Mehrfaches Ausführen von Prepared Statements

286Limitierungen von Platzhaltern in Prepared Statements

286Prepared Statements mit benannten Platzhaltern

288PDO und Sicherheit

290CRUD

291Vorbereitungen

292READ: index.php

293CREATE: anlegen.php

296DELETE: loeschen.php

297UPDATE: bearbeiten.php

299Zusammenfassung

299Testen Sie Ihr Wissen!

300Übungen

300Optionale Übungen

302Tricks rund um Arrays

302Das Problem

302Array-Sortierung

306Benutzerdefinierte Vergleichsfunktionen

307Der Spaceship-Operator

308Anonyme Funktionen

310Der Splat-Operator

311Variadische Funktionen

312Dereferenzierung

313Destructuring

315Zusammenfassung

315Testen Sie Ihr Wissen!

317Anhang 1: XAMPP

317Was XAMPP ist

317Installation

318Windows

318Mac OS X

319Linux

319Zusammenfassung

320Anhang 2: Editoren und IDEs

320Notepad++

320Alternativen zu Notepad++

20.5.3

20.5.4

20.5.5

20.6

20.6.1

20.6.2

20.7

20.8

21

21.1

21.1.1

21.1.2

21.1.3

21.1.4

21.1.5

21.2

21.2.1

21.2.2

21.2.3

21.2.4

21.2.5

21.3

21.4

21.5

21.6

22

22.1

22.2

22.2.1

22.2.2

22.2.3

22.3

22.4

22.5

22.6

22.7

22.8

23

23.1

23.2

23.2.1

23.2.2

23.2.3

23.3

24

24.1

24.2

Page 11: Jan Teriete Grundlagen der PHP7-Programmierung · PHP-Datentypen 62 Das Problem 62 Die Funktion gettype() 62 NULL 62 Boolean 63 Grundlagen 63 isset() und unset() 63 empty() 64 Integer

321Lösungen der Übungsaufgaben

325Lösungen der Wissensfragen

338Index

Page 12: Jan Teriete Grundlagen der PHP7-Programmierung · PHP-Datentypen 62 Das Problem 62 Die Funktion gettype() 62 NULL 62 Boolean 63 Grundlagen 63 isset() und unset() 63 empty() 64 Integer

3.1

3.2

3.2.1

3.2.2

3 HTML und PHP

In dieser Lektion lernen Sie

➤ wie Sie PHP in Ihre HTML-Dateien einbetten können.➤ was Sie dabei beachten müssen.➤ die sechs Fehler kennen, die jeder PHP-Anfänger macht.➤ die echo -Anweisung kennen.

Das Problem

Wenn Sie die letzte Lektion durchgelesen haben, wissen Sie nun, wie eine dynamische Webseite prin-zipiell funktioniert. Jetzt wird es jedoch Zeit, dass Sie selbst eine PHP-Seite bauen, daher lassen Sie unsauch gleich loslegen. Sie haben inzwischen doch den Webserver und den Code-Editor installiert, wie esin Lektion 1 verlangt war, oder?

PHP in eine HTML-Seite einbetten

Eine statische HTML-Seite erstellen

Öffnen Sie Ihren bevorzugten Code-Editor und erstellen Sie nachfolgendes HTML-Dokument. SpeichernSie es im document root Ihres Webservers im Unterordner phpschulung unter dem Namenerste_seite.php ab. Wenn Sie beispielsweise eine Standardinstallation von XAMPP (siehe Lektion 23)durchgeführt haben, ist Ihr document root das Verzeichnis c:\xampp\htdocs. Bei MAMP unter Mac OSX ist der Standard /Applications/MAMP/htdocs und auf Linux-Servern finden Sie dieses Verzeichnis oftunter /var/www. Vergessen Sie nicht die korrekte Dateiendung .php zu benutzen, diese ist sehr wichtig.

Beispiel

1 <!DOCTYPE html>2 <html>34 <head>5 <meta charset="utf-8" />6 <title>Hallo Welt</title>7 </head>89 <body>

1010 Hallo Welt11 </body>1213 </html>

Codebeispiel 1 erste_seite.php (Version 1)

Rufen Sie die Datei nun in Ihrem Browser unter der URL http://localhost/phpschulung/erste_seite.php auf.

PHP-Code einfügen

So weit sollte das für Sie nichts Neues gewesen sein. Das Besondere an PHP ist allerdings, dass Sie es,ähnlich wie Javascript, direkt in Ihre HTML-Dokumente einfügen können.

28 3 HTML und PHP

Page 13: Jan Teriete Grundlagen der PHP7-Programmierung · PHP-Datentypen 62 Das Problem 62 Die Funktion gettype() 62 NULL 62 Boolean 63 Grundlagen 63 isset() und unset() 63 empty() 64 Integer

3.2.3

Um dem Webserver zu zeigen, wo PHP-Code in HTML-Dokumenten steht, wurde ein spezieller Tag ent-wickelt, der jeden PHP-Code umgeben muss. Kein PHP-Code darf außerhalb dieser Begrenzung stehen,oder der Webserver hält ihn für normales HTML und zeigt ihn einfach an.

Beispiel

1 <!DOCTYPE html>2 <html>34 <head>5 <meta charset="utf-8" />6 <title><?php<?php echoecho "Hallo Welt"; ?>?></title>7 </head>89 <body>

1010 <?php<?php echoecho "Hallo Welt"; ?>?>11 </body>1213 </html>

Codebeispiel 2 erste_seite.php (Version 2)

Was hat sich hier geändert? Wenn Sie sich die geänderte Seite in Ihrem Browser ansehen, werden Siekeinen Unterschied feststellen. Die Seite hat immer noch den Titel Hallo Welt und gibt im body -Tagdenselben Text noch einmal aus.

Der Unterschied ist, dass der Text Hallo Welt nun mittels PHP in die Seite geschrieben wurde. Wannimmer Sie PHP-Code einfügen wollen, müssen Sie zuerst <?php schreiben, um zu zeigen, dass nunPHP-Code folgt. Wenn Sie mit dem PHP-Block fertig sind, zeigen Sie das durch den schließenden Tag?> . Um die Bedeutung des eigentlichen PHP-Codes müssen Sie sich im Moment noch nicht kümmern.4

Jeder PHP-Code muss zwischen <?php und dem schließenden Tag ?> stehen. Ansonsten wird ernicht ausgewertet, sondern unverändert angezeigt. Dies sind die sogenannten PHP-Tags, analogzu den bekannten HTML-Tags.

PHP erzeugt HTML

Wenn Sie sich den Quelltext der HTML-Seite anzeigen lassen (z.B. im Firefox-Browser mit Strg+U), wer-den Sie feststellen, dass dort nichts mehr von dem PHP-Code zu sehen ist. Bei genauerer Betrach-tung werden Sie sogar erkennen, dass die erzeugte Seite mit der ersten, statischen Version ausAbschnitt 3.2.1 identisch ist. Vermutlich sind nicht alle Zeilenumbrüche da, wo Sie es erwarten. Zum Bei-spiel könnte der schließende body-Tag hinter das "Hallo Welt" gerutscht sein. Doch dies soll uns nichtweiter stören.

Exakt das ist damit gemeint, wenn man von PHP als einer serverseitigen Programmiersprache spricht.Der Webserver hat die PHP-Datei geöffnet, den PHP-Code durch den Interpreter auswerten lassenund, was als Ergebnis übrig blieb, an den Browser gesendet. Der Browser sieht nichts mehr von denursprünglichen PHP-Tags und das ist auch gut so, denn Webbrowser haben keine Ahnung, was PHPüberhaupt ist!

Javascript wird vom Webbrowser ausgewertet. Also ist Javascript-Code für den Browser sichtbar.PHP wird schon auf dem Webserver ausgewertet, lange bevor der Browser die Seite erhält. Alsosollte ein Webbrowser niemals PHP-Code sehen.

4. Er sorgt dafür, dass der Text in den Anführungszeichen in der Webseite angezeigt wird.

3.2 PHP in eine HTML-Seite einbetten 29

Page 14: Jan Teriete Grundlagen der PHP7-Programmierung · PHP-Datentypen 62 Das Problem 62 Die Funktion gettype() 62 NULL 62 Boolean 63 Grundlagen 63 isset() und unset() 63 empty() 64 Integer

3.3

3.3.1

3.3.2

Die sieben berühmten Fehler

Wenn Sie den Beispielen aus dem vorherigen Abschnitt problemlos folgen konnten, gratulieren Sie sich.Sie haben die Beispiele fehlerfrei abgetippt. Wenn Sie hingegen seltsame Meldungen oder schlimmer,gar nichts in Ihrem Browser gesehen haben, sind Sie wahrscheinlich in einen der sechs Fehler gelaufen,die jeder PHP-Anfänger macht. Sollte es Sie erwischt haben, grämen Sie sich nicht. Das bedeutet nur,dass Sie es schon hinter sich haben! Jeder PHP-Anfänger macht diese Fehler!

PHP-Code im HTML-Bereich schreiben

Einer der beliebtesten Fehler ist es, PHP-Code außerhalb des durch <?php ?> markierten Bereicheszu schreiben. Das bedeutet, dass dieser Code für HTML gehalten und einfach an den Browser geschicktwird.

Beispiel

1 <!DOCTYPE html>2 <html>34 <head>5 <meta charset="utf-8" />6 <title><?php<?php echoecho "Hallo Welt"; ?>?></title>7 </head>89 <body>

1010 echo "Hallo Welt";11 </body>1213 </html>

Codebeispiel 3 php_im_html.php

Die erste echo -Anweisung in Zeile 6 wird korrekt ausgewertet. Im Browser steht an dieser Stelle nurnoch Hallo Welt . In Zeile 10 jedoch haben wir vergessen, den PHP-Code in den passenden Tags zuverbergen. Das Ergebnis ist, dass der Browser an dieser Stelle das komplette echo "Hallo Welt";ausgibt.

HTML-Code im PHP-Bereich schreiben

Das Gegenteil des letzten Fehlers ist genauso verhängnisvoll. Wenn Sie HTML-Tags in den PHP-Bereichschreiben, versucht der PHP-Interpreter, aus den für ihn seltsamen Zeichen schlau zu werden und gibtschließlich mit einer Fehlermeldung auf.

Beispiel

1 <!DOCTYPE html>2 <html>34 <head>5 <?php<?php <meta charset="utf-8" /> ?>?>6 <title><?php<?php echoecho "Hallo Welt"; ?>?></title>7 </head>89 <body>

1010 <?php<?php echoecho "Hallo Welt"; ?>?>11 </body>1213 </html>

Codebeispiel 4 html_im_php.php

30 3 HTML und PHP

Page 15: Jan Teriete Grundlagen der PHP7-Programmierung · PHP-Datentypen 62 Das Problem 62 Die Funktion gettype() 62 NULL 62 Boolean 63 Grundlagen 63 isset() und unset() 63 empty() 64 Integer

3.3.3

3.3.4

3.3.5

Jetzt liegt der Fehler in Zeile 5. Dort wird zwar ein PHP-Tag geöffnet, aber sein Inhalt besteht aus puremHTML. Bestraft wird dieses Verhalten von PHP mit einer hässlichen Fehlermeldung. Wenn Sie die Seiteaufrufen, sehen Sie folgenden Text:

Parse error: syntax error, unexpected '<' in (...)\html_im_php.php on line 5

Genauso wenig, wie der Browser Ahnung von PHP hat, weiß der PHP-Interpreter etwas mit den HTML-Formatierungen anzufangen. Dementsprechend sagt er uns auch, dass er mit dem unerwarteten (unex-pected) Zeichen '<' nichts anfangen kann.

Die PHP-Datei hat die Endung .html

Selbst wenn Sie das ursprüngliche Beispiel fehlerfrei abgetippt haben, kann es dennoch sein, dass Sieden kompletten Code mit allen PHP-Tags im Browser sehen. Das kann mehrere Gründe haben. Der Häu-figste ist jedoch, dass Sie die Datei mit der Endung .html versehen haben.

Wenn eine Datei, die PHP-Code enthält, nicht auf .php endet, weiß der Webserver für gewöhnlichnicht, dass sich PHP darin befindet, und schickt die Datei unverändert an den Browser.

Welche Dateiendungen der Webserver als PHP-Dateien ansieht, kann natürlich konfiguriert werden.Häufig funktionieren neben .php auch versionsspezifische Endungen wie beispielsweise .php55.Solange Sie keinen triftigen Grund haben, etwas anderes zu tun, sollten Sie immer die Endung .php ver-wenden, da diese immer funktioniert und Sie auf die genaue Konfiguration bei Ihrem Webhoster oftkeinen Einfluss haben.

Die PHP-Datei liegt nicht im Zugriff des Webservers

Ein Webserver darf nur auf Dateien in einem vorher festgelegten Verzeichnis, genannt document root,zugreifen. Wenn Sie Ihre PHP-Dateien außerhalb dieses Verzeichnisses speichern, wird der Webserversie nicht finden und einen Fehler melden.

Dies ist ein, gerade von PHP-Anfängern, häufig gemachter Fehler, da die meisten Windows-Anwenderes beispielsweise gewohnt sind, Dateien in Eigene Dateien oder auf dem Desktop abzulegen, wo derWebserver sie nicht finden kann.

Wenn Sie häufiger in diese Falle tappen, legen Sie sich eine Verknüpfung zum document root aufIhrem Desktop an. Dadurch sieht es so aus, als würden Sie die Dateien direkt in einem Ordner aufdem Desktop ablegen, und es funktioniert trotzdem.

Die PHP-Datei wurde direkt im Browser geöffnet

Kommen wir nun zum wahrscheinlich häufigsten Anfängerfehler. Anstatt die PHP-Datei über den Web-server aufzurufen, haben Sie die Datei direkt vom Dateisystem aus geöffnet. Das bedeutet, Ihr Web-browser erhält direkt den PHP-Code und hat natürlich keine Ahnung, was er damit anfangen soll.Moderne Browser blenden meist alles zwischen <?php ... ?> einfach aus, aber gerade ältere Brow-ser haben den Inhalt direkt angezeigt.

Sie merken am besten an der URL-Zeile im Firefox-Browser, dass Sie die Datei direkt geöffnet haben.Wenn Sie dort zu Anfang file:// lesen, sind Sie in die Falle getappt. Gerade am Anfang Ihrer PHP-Karrieresollte der erste Blick der URL gelten, wenn etwas nicht so funktioniert, wie Sie es erwarten. In ande-ren Browsern wie beispielsweise Chrome wird eine PHP-Datei in einem solchen Fall übrigens gar nichtgeöffnet, sondern zum Download angeboten.

3.3 Die sieben berühmten Fehler 31

Page 16: Jan Teriete Grundlagen der PHP7-Programmierung · PHP-Datentypen 62 Das Problem 62 Die Funktion gettype() 62 NULL 62 Boolean 63 Grundlagen 63 isset() und unset() 63 empty() 64 Integer

3.3.6

3.3.7

Die echo-Anweisung fehlt

In den vorherigen Abschnitten haben Sie in die PHP-Tags das Wort echo , gefolgt von Text in Anfüh-rungszeichen, geschrieben. Das Ergebnis war, dass das Wort echo und die Anführungszeichen ver-schwunden sind und nur der Text selbst im Browser angekommen ist.

Dieses Wort echo ist für PHP eine Anweisung und veranlasst den PHP-Interpreter, den folgenden Textauszugeben. Im Gegensatz zu HTML, wo Sie jegliche Ausgabe einfach in die Datei schreiben, müssen SiePHP ausdrücklich sagen, wenn Sie etwas auf dem Bildschirm ausgeben wollen. Für diesen Zweck gibtes in PHP eine ganze Reihe von Anweisungen, für den Anfang soll uns echo allerdings genügen, da Siemit dieser Anweisung fast jede Situation meistern können.

Beispiel

1 <!DOCTYPE html>2 <html>34 <head>5 <meta charset="utf-8" />6 <title><?php<?php echoecho "Hallo Welt"; ?>?></title>7 </head>89 <body>

1010 <?php<?php "Hallo Welt"; ?>?>11 </body>1213 </html>

Codebeispiel 5 echo_fehlt.php

Fehlt die echo -Anweisung, so hat der PHP-Interpreter keine Ahnung, was er mit dem Text in Anfüh-rungszeichen anfangen soll, und dieser verfällt nach Ausführung von Zeile 10 ungenutzt. In diesem Fallerhalten wir somit eine leere Seite, da das body -Tag keinen weiteren Inhalt hat.

Das Leerzeichen wurde vergessen

Fehlt zwischen dem öffnenden Tag <?php und der nachfolgenden Anweisung das trennende Leerzei-chen, so kann der PHP-Interpreter den PHP-Code nicht mehr erkennen.

Beispiel

1 <!DOCTYPE html>2 <html>34 <head>5 <meta charset="utf-8" />6 <title><?php<?php echoecho "Hallo Welt"; ?>?></title>7 </head>89 <body>

1010 <?php<?phpechoecho "Hallo Welt"; ?>?>11 </body>1213 </html>

Codebeispiel 6 leerzeichen_fehlt.php

Im Browser bekommen wir beim Aufruf dieser PHP-Datei eine leere Seite angezeigt. Es gibt auch keineFehlermeldung des PHP-Interpreters, da dieser den PHP-Code ja gar nicht erkannt hat. Schaut man sichjedoch den Quelltext der HTML-Seite im Browser an, so kann man das Problem an dem im Quelltextenthaltenen PHP-Code erkennen. Eine PHP-IDE würde die fehlerhafte Zeile 10 übrigens sofort im Codemarkieren.

32 3 HTML und PHP

Page 17: Jan Teriete Grundlagen der PHP7-Programmierung · PHP-Datentypen 62 Das Problem 62 Die Funktion gettype() 62 NULL 62 Boolean 63 Grundlagen 63 isset() und unset() 63 empty() 64 Integer

3.4

3.4.1

3.4.2

Mehrzeilige PHP-Anweisungen

Das Semikolon

Bisher haben Sie in jedem Beispiel am Ende einer PHP-Anweisung ein Semikolon, zu Deutsch Strich-punkt, gesehen. Sollten Sie eines vergessen haben, werden Sie keinen Unterschied bemerkt haben. DerPHP-Code hat weiterhin genau dasselbe getan.

Wofür brauchen wir dieses Semikolon dann überhaupt? Es ist für die Trennung einzelner PHP-Anwei-sungen zuständig. Wenn Sie also mehr als eine Anweisung für PHP haben, müssen Sie dazwischen einSemikolon setzen.

Beispiel

1 <!DOCTYPE html>2 <html>34 <head>5 <meta charset="utf-8" />6 <title><?php<?php echoecho "Hallo Welt"; ?>?></title>7 </head>89 <body>

1010 <?php<?php echoecho "Hallo Welt "; echoecho "und willkommen beim PHP-Seminar!"; ?>?>11 Das ist normales HTML.12 <?php<?php echoecho "Das ist korrekt." echoecho "Das nicht mehr!"; ?>?>13 </body>1415 </html>

Codebeispiel 7 mehrere_php_anweisungen.php

Der Unterschied zwischen den Zeilen 10 und 12 besteht darin, dass in Zeile 12 vor dem zweiten echokein Semikolon steht. PHP denkt also, hier stünde nur eine einzige lange Anweisung anstatt zwei. Daeine Anweisung mit zwei echo -Aufrufen für PHP kein gültiger Code ist, wird hier ein Fehler erzeugt:

Parse error: syntax error, unexpected 'echo' (T_ECHO), expecting ',' or ';' in(...)\mehrere_php_anweisungen.php on line 12

PHP sagt uns hier, dass in Zeile 12 entweder ein Komma oder ein Semikolon erwartet wird. Tragen Siealso das in diesem Fall fehlende Semikolon nach, damit der Code funktioniert.

Mehrzeilige PHP-Anweisungen

Auch wenn es funktioniert, mehrere PHP-Anweisungen hintereinander zu schreiben, so ist es nicht wirk-lich übersichtlich. Vergleichen Sie im folgenden Listing die beiden PHP-Blöcke:

Beispiel

1 <!DOCTYPE html>2 <html>34 <head>5 <meta charset="utf-8" />6 <title>Hallo Welt</title>7 </head>89 <body>

1010 <?php<?php echoecho "Hallo Welt "; echoecho "und willkommen beim PHP-Seminar! "; echoecho"Langsam wir es unübersichtlich. "; echoecho "Jetzt ist aber wirklich Schluss!"; ?>?>

3.4 Mehrzeilige PHP-Anweisungen 33

Page 18: Jan Teriete Grundlagen der PHP7-Programmierung · PHP-Datentypen 62 Das Problem 62 Die Funktion gettype() 62 NULL 62 Boolean 63 Grundlagen 63 isset() und unset() 63 empty() 64 Integer

3.5

3.5.1

11 <br />12 <?php<?php1314 echoecho "So sieht das schon viel besser aus. ";15 echoecho "Wenn Sie jede Anweisung auf eine Zeile schreiben, ";16 echoecho "behalten Sie leichter den Überblick. ";17 echoecho "Trotzdem müssen Sie immer noch ";18 echoecho "ein Semikolon nach jeder Anweisung schreiben, ";19 echoecho "da PHP eine neue Zeile nicht als das Ende ";2020 echoecho "einer Anweisung sieht.";2122 ?>?>23 </body>2425 </html>

Codebeispiel 8 mehrzeiliges_php.php

Der erste Abschnitt in Zeile 10 ist, obwohl PHP ihn versteht, nicht sehr übersichtlich. Sie müssen gezieltnach den Semikolons suchen, um den Beginn einer neuen Anweisung zu sehen. Der zweite Abschnittin den Zeilen 12 bis 22 bringt jede Anweisung auf eine eigene Zeile, was es Ihnen leichter macht, denCode zu verstehen. Für PHP macht es allerdings keinen Unterschied.

Schreiben Sie jede Anweisung auf eine eigene Zeile, um die Lesbarkeit des Codes zu erhöhen.Wenn Sie mehrzeilige PHP-Anweisungen haben, schreiben Sie den öffnenden und den schließen-den PHP-Tag auf jeweils eigene Zeilen.

Stilfragen

Saubere Trennung von HTML und PHP

In diesem Abschnitt werden Sie eines der wenigen Codebeispiele in diesem Lernbuch sehen, das ein-deutig schlechten Stil darstellt. Ich bemühe mich natürlich, Ihnen nur Dinge beizubringen, die Sie spä-ter auch so benutzen sollten. Manchmal müssen Sie dafür aber auch Beispiele sehen, wie Sie es nichtmachen sollten. Hier ist das erste:

Beispiel

1 <!DOCTYPE html>2 <html>34 <head>5 <meta charset="utf-8" />6 <title>Hallo Welt</title>7 </head>89 <body>

1010 <?php<?php1112 echoecho '<form action="test.php" method="post">';13 echoecho '<input type="text" name="vorname" id="vorname" value="Arthur" />';14 echoecho '<input type="text" name="nachname" id="nachname" value="Dent" />';15 echoecho '<input type="submit" value="abschicken" />';16 echoecho '</form>';1718 ?>?>19 </body>202021 </html>

Codebeispiel 9 stillos.php

34 3 HTML und PHP

Page 19: Jan Teriete Grundlagen der PHP7-Programmierung · PHP-Datentypen 62 Das Problem 62 Die Funktion gettype() 62 NULL 62 Boolean 63 Grundlagen 63 isset() und unset() 63 empty() 64 Integer

Vergleichen Sie das Beipiel eben mit dem folgenden, das exakt die gleiche Ausgabe erzeugt:

Beispiel

1 <!DOCTYPE html>2 <html>34 <head>5 <meta charset="utf-8" />6 <title>Hallo Welt</title>7 </head>89 <body>

1010 <form action="test.php" method="post">11 <input type="text" name="vorname" id="vorname" value="<?php<?php echoecho 'Arthur';?>?>" />12 <input type="text" name="nachname" id="nachname" value="<?php<?php echoecho 'Dent';?>?>" />13 <input type="submit" value="abschicken" />14 </form>15 </body>1617 </html>

Codebeispiel 10 stilvoll.php

Im ersten Listing wird ein komplettes HTML-Formular mit mehreren echo -Anweisungen ausgegeben.Das ist prinzipiell möglich, da echo jede Art von Inhalten ausgeben kann, auch HTML-Formatierungen.Diese Herangehensweise hat allerdings mehrere Nachteile, von denen einige bereits jetzt offensichtlichsind:

➤ Da Sie wahrscheinlich (hoffentlich) mit einem Editor arbeiten, der Syntax-Highlighting beherrscht,wird auch der HTML-Code farblich hervorgehoben, z. B. werden Attribute und ihre Werte unter-schiedlich dargestellt. Wenn Sie einen HTML-Tag in eine echo -Anweisung verpacken, verlieren Siein einigen Editoren diesen Vorteil. Alles wird in einer Farbe dargestellt, was das Auffinden von Feh-lern erschwert.

➤ Sie müssen alle Texte, die Sie mit echo ausgeben, in Anführungszeichen einschließen. Ich werdespäter noch im Detail darauf eingehen, aber Sie dürfen dieselben Anführungszeichen nicht mehrim Text verwenden, die Sie zum Einschließen verwendet haben. In unserem Beispiel wäre Folgen-des also nicht erlaubt: <?php echo 'Arthur 's '; ?>

➤ Jedes Zeichen, das Sie statt direkt im HTML mit echo ausgeben, sorgt dafür, dass die Seite langsa-mer lädt, da PHP mehr Daten verarbeiten muss. Der Unterschied mag bei kleinen Seiten nicht insGewicht fallen, aber auch dort gibt es keinen Grund, den Server unnötig zu belasten.

➤ Es ist schlicht und ergreifend hässlich!

Wenn Sie sich fertige PHP-Programme aus dem Internet herunterladen, werden Sie gerade bei älterenProjekten noch viel Code sehen, der wie die erste Version aussieht. Inzwischen ist man in der PHP-Community allerdings komplett von dieser Vorgehensweise abgerückt. Viele Projekte jüngeren Datumsakzeptieren gar keinen Code mehr, der irgendwelche HTML-Formatierungen mit PHP-Anweisungenausgibt. Sie werden später noch wesentlich mehr zu diesem Thema hören, also gewöhnen Sie es sicham besten gar nicht erst falsch an:

Versuchen Sie, wo immer möglich, HTML-Code und PHP-Code getrennt zu halten. HTML-Tags mitPHP-Anweisungen auszugeben, ist extrem schlechter Stil und behindert die Übersichtlichkeit IhresCodes.

3.5 Stilfragen 35

Page 20: Jan Teriete Grundlagen der PHP7-Programmierung · PHP-Datentypen 62 Das Problem 62 Die Funktion gettype() 62 NULL 62 Boolean 63 Grundlagen 63 isset() und unset() 63 empty() 64 Integer

3.5.2 Einrückungen

Ein zweiter Punkt beim Thema Stil sind Code-Einrückungen. Vergleichen Sie die beiden Beispiele:

Beispiel

1 <!DOCTYPE html>2 <html>34 <head>5 <meta charset="utf-8" />6 <title>Hallo Welt</title>7 </head>89 <body>

1010 <?php<?php1112 echoecho "So sieht das schon viel besser aus. ";13 echoecho "Wenn Sie jede Anweisung auf eine Zeile schreiben, ";14 echoecho "behalten Sie leichter den Überblick. ";15 echoecho "Trotzdem müssen Sie immer noch ";16 echoecho "ein Semikolon nach jeder Anweisung schreiben, ";17 echoecho "da PHP eine neue Zeile nicht als das Ende ";18 echoecho "einer Anweisung sieht.";192020 ?>?>21 </body>2223 </html>

Codebeispiel 11 schlechter_stil.php

Beispiel

1 <!DOCTYPE html>2 <html>34 <head>5 <meta charset="utf-8" />6 <title>Hallo Welt</title>7 </head>89 <body>

1010 <?php<?php1112 echoecho "So sieht das schon viel besser aus. ";13 echoecho "Wenn Sie jede Anweisung auf eine Zeile schreiben, ";14 echoecho "behalten Sie leichter den Überblick. ";15 echoecho "Trotzdem müssen Sie immer noch ";16 echoecho "ein Semikolon nach jeder Anweisung schreiben, ";17 echoecho "da PHP eine neue Zeile nicht als das Ende ";18 echoecho "einer Anweisung sieht.";192020 ?>?>21 </body>2223 </html>

Codebeispiel 12 guter_stil.php

Sie sollten auf den ersten Blick sehen, was im oberen Beispiel falsch gelaufen ist. In PHP gelten im Prinzipdieselben Regeln wie in HTML: Sie sollten alles einheitlich formatieren und einrücken. Wenn Sie meh-rere echo -Anweisungen nacheinander schreiben, sollten alle gleich eingerückt sein.

36 3 HTML und PHP

Page 21: Jan Teriete Grundlagen der PHP7-Programmierung · PHP-Datentypen 62 Das Problem 62 Die Funktion gettype() 62 NULL 62 Boolean 63 Grundlagen 63 isset() und unset() 63 empty() 64 Integer

3.6

3.7

3.8

Wenn Sie sich jetzt fragen, warum ich das überhaupt erwähne, seien Sie versichert: Solange Ihnen dasEinrücken nicht in Fleisch und Blut übergegangen ist, werden Sie sich immer wieder dabei ertappen,dass Ihr Code nicht einheitlich formatiert ist.

Sobald Sie mehr PHP-Anweisungen beherrschen, werde ich noch mehr Beispiele zu diesem Thema brin-gen. Merken Sie sich aber schon mal:

Formatieren Sie Ihren Code immer auf die gleiche Weise. Der (in)offizielle PHP-Standard ist es, jedeEbene um zusätzliche vier Leerzeichen einzurücken. Viele Editoren unterstützen Sie dabei, indemSie einen einzelnen Tab in vier Leerzeichen umwandeln. Die einzige Ausnahme bildet bei einermehrzeiligen PHP-Anweisung die erste Ebene, welche wir nicht (weiter) einrücken. Diese ist somitbündig zum öffnenden und schließenden PHP-Tag.

Noch besserer Stil ist es übrigens, wenn man statischen Text gar nicht erst mit echo ausgibt, aber zuden variablen Inhalten kommen wir erst in der nächsten Lektion.

Zusammenfassung

In dieser Lektion haben Sie die ersten Gehversuche in PHP unternommen. Sie haben gelernt, dass Siemit den Tags <?php und ?> PHP-Code direkt in HTML einbetten können. Sie haben erfahren, dass Siemehrere Anweisungen mit dem Semikolon trennen müssen, und welchen Zweck die echo -Anweisungerfüllt.

Zusätzlich haben Sie aber auch schon jetzt die ersten Hinweise erhalten, wie Sie sauberen Code schrei-ben, der Ihnen später keinen Ärger macht. Je früher Sie sich an diese Tipps halten, desto besser, denneinmal falsch gelernte Angewohnheiten sind nur schwer wieder loszuwerden. Auch wenn Ihnen das imMoment vielleicht übertrieben erscheint, werden Sie später sehr dankbar sein, sich nicht umgewöhnenzu müssen.

Testen Sie Ihr Wissen!

Wie können Sie PHP-Code in HTML einbetten?

Bitte ankreuzen:

Übungen

Übung 1:

Legen Sie einen Unterordner lektion03 im Ordner phpschulung an. Speichern Sie dort ein HTML-Dokument namens spass.php, das im <body> -Tag den Text PHP macht Spaß! stehen hat.

Hinweis: Legen Sie fortan für alle Übungen einer Lektion zunächst einen entsprechenden Unter-ordner an.

Der Beginn des PHP-Codes kann mit <?php markiert werden.

Der Beginn des PHP-Codes kann mit <php markiert werden.

Das Ende des PHP-Codes kann mit ?> markiert werden.

Der PHP-Interpreter erkennt ohne besondere Markierung den Beginn und das Ende des PHP-Codes von selbst.

3.6 Zusammenfassung 37

Page 22: Jan Teriete Grundlagen der PHP7-Programmierung · PHP-Datentypen 62 Das Problem 62 Die Funktion gettype() 62 NULL 62 Boolean 63 Grundlagen 63 isset() und unset() 63 empty() 64 Integer

3.9

Übung 2:

Verändern Sie das Dokument. Der Text PHP macht Spaß! soll nun mit der PHP-Anweisung echoausgegeben werden.

Übung 3:

Öffnen Sie nun die Datei spass.html direkt im Firefox-Browser über Datei→ öffnen und beobach-ten Sie, was passiert.

Hinweis: Seit Version 4 ist im Mozilla Firefox die Menüleiste standardmäßig deaktiviert. Sie kannjedoch durch Drücken der (linken) Alt-Taste eingeblendet werden. Alternativ lässt sich die Dateiauch einfach auf den Anzeigebereich des Browsers ziehen, wodurch sie im Browser geöffnet wird.

Übung 4:

Öffnen Sie die Datei nun über den Webserver, also über http://localhost/phpschulung/lektion03/spass.php , und beobachten Sie, was passiert.

Übung 5:

Benennen Sie die Datei in spass.html um, öffnen Sie sie über http://localhost/phpschulung/lektion03/spass.html und beobachten Sie den Unterschied in der Darstel-lung.

Optionale Übungen

Übung 6:

Schreiben Sie ein HTML-Dokument mit dem Namen formular.php, das ein Formular mit den fol-genden Feldern enthält:

➤ <input type="text" name="benutzername" value="" /> ,

➤ <input type="password" name="passwort1" value="" /> ,

➤ <input type="password" name="passwort2" value="" /> und

➤ <input type="submit" value="registrieren" /> .

Übung 7:

In dem Feld benutzername soll nun standardmäßig "Mr. X" stehen, was über das value -Attributmöglich ist. Der Text soll dort mittels einer PHP- echo -Anweisung eingetragen werden.

Übung 8:

In den beiden password -Feldern sollen jeweils fünf Sterne ( ***** ) stehen. Auch diese sollendort mit echo eingetragen werden. Wie werden die Sterne im Browser dargestellt?

38 3 HTML und PHP