Webanwendungen mit PHP
Client-Server-Technik
Testumgebung mit XAMPP
Gehe auf http://www.apachefriends.org und lade eine passende Distribution herunter. Empfohlen wird die Portable-Zip-Version (https://sourceforge.net/projects/xampp/files/XAMPP%20Windows/8.2.12/). Einfach im Hauptverzeichnis (C: oder D: oder so) entpacken und schon hast du die fertige Entwicklungsumgebung inklusive Webserver, PHP und Datenbank MySQL.
Wenn Apache nicht startet, hilft vielleicht dieser Workaround
Wenn man einen Aliaspfad anlegen möchte findet man Infos unter troubleshooting.html
PHP-Tutorial
Einen Kurs und ein Nachschlagewerk findest du wie gewohnt auf W3-Schools
Vorlage
Verwende für alle Übungsbeispiele eine vollständige HTML-Datei
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Title of the document</title>
<link rel="stylesheet" href="mystyle.css">
</head>
<body>
<h1>This is a heading</h1>
<p>This is a paragraph.</p>
<?php
?>
</body>
</html>
Aufgabenstellungen
Erstelle eine korrekte HTML-Datei (mit Endung .php) als Vorlage und kopiere sie jeweils für jedes PHP-Programm.
Gehe auf W3Schools und arbeite die Kapitel "Syntax" bis "Strings" durch
Aufgabe 1: Schreib den Satz "PHP ist cool!" in eine Variable. Gib den Satz, die Anzahl der Buchstaben, die Anzahl der Wörter und den Satz rückwärts aus. Soll dann so aussehen
Arbeite die Kapitel "Operators", "Numbers" und "Math" durch
Aufgabe 2: Belege 2 Variablen mit Zahlen und führe die 4 Grundrechnungsarten durch. Soll dann so aussehen
Arbeite die Kapitel "If...Else" und "Switch" durch
Aufgabe 3: Belege 3 Variablen mit den Parametern einer Quadratischen Gleichung. Gib die Lösung an. Mach eine Fallunterscheidung für 0, 1, 2 Lösungen Soll dann so aussehen (nur eine der 3 Varianten, probier aber unterschiedliche Parameter)
Arbeite das Kapitel "Loops" durch
Aufgabe 4: Liste die Fakultät aller natürlichen Zahlen auf, solange sie eine bestimmte Obergrenze (zB 10^9) nicht überschreitet. Verwende dabei einmal while und einmal do...while. Soll dann so aussehen
Aufgabe 5: Liste die 3er-Reihe von 1*3 bis 100*3 durch eine Schleife auf. Soll dann so aussehen
Aufgabe 6: Liste das kleine Einmaleins von 1*1=1 bis 10*10=100 auf. Soll dann so aussehen
Studiere das Kapitel "Functions"
Aufgabe 7:Erstelle eine Funktion malreihe($j), der man eine Zahl übergibt, und die dann die entsprechende Malreihe ausgibt. Ruf die Funktion für 4 und 7 auf. Soll dann so aussehen
Aufgabe 8:Erstelle eine Funktion fak($n), der man eine natürliche Zahl übergibt. Von dieser wird die Fakultät berechnet und anschließend mit return zurückgegeben. Probier das für mehrere Zahlen aus.Soll dann so aussehen
Fleißaufgabe:Schreib die Funktion fak($n) als rekursive Funktion, die sich selbst wieder aufruft mit einem um 1 verringerten Parameter (natürlich nur solange $n>1). Ausgabe gleich wie vorher. Überlege: 6!=6*5!, 5!=5*4!, 4!=4*3!....
Aufgabe 9:Schreib die Lösungsfunktionalität für die quadratische Gleichung in eine Funktion, die dann mehrfach hintereinander für unterschiedliche Parameter aufgerufen wird. Soll dann so aussehen
Studiere das Kapitel "Arrays" (mit Unterkapiteln)!
Fragen:
- $fruits = array("Apple", "Banana", "Orange"); Welche Anweisung gibt "Banana" aus?
- Was gibt count($fruits) für den vorigen Array aus?
- Wozu kann man in PHP eine Foreach-Schleife verwenden?
- In PHP gibt es verschiedene Array-Sortierfunktionen. Wann verwendet man sort(), asort() und ksort()?
Aufgabe 10: Erzeuge zwei Arrays mit Zahlen. Sie stellen Vektoren dar. Erstelle eine function vadd($a,$b). Sie addiert die Vektoren und gibt mit return das Ergebnis als Array zurück. Die ganze Rechnung wird ausgegeben. Soll dann so aussehen Hinweis: mit der Funktion implode() kannst du den Array für die Ausgabe in einen String verwandeln.
Fleißaufgabe:Schreib die Funktion vadd($a,$b) so um, dass sie für beliebigdimensionale Vektoren funktioniert (Hinweis: mit count($a) erhält man die Anzahl der Elemente von $a). Ergänze die Vektorrechnung um Subtraktion, Skalarmultiplikation und Multiplikation mit einer Zahl. Soll dann so aussehen
Aufgabe 11: Erzeuge einen assoziativen Array mit Ländern und einen mit deren Hauptstädten. Verwende als key jeweils die Top Level Domain. Diese Ausgaben sollen gemacht werden
Studiere die Kapitel "Superglobals" und "Form Handling".
Fragen:
- Wozu braucht man $_SERVER['PHP_SELF']?
- Wozu dienen die Arrays $_REQUEST, $_POST und $_GET?
- Welcher Unterschied besteht zwischen $_POST und $_GET?
- Was besagen die Attribute action und method im form-Tag?
- Wie schaut der form-Tag aus, wenn nach dem Absenden zur selben Datei zurückgekehrt werden soll? (siehe auch Form-Validation)
Aufgabe 12: Arbeite das Beispiel mit der quadratischen Gleichung so um, dass man die Parameter eingeben kann. Soll dann so aussehen
Studiere die Kapitel "File Handling, File Open/read, File Create/Write".
Fragen:
- Folgende Codezeile öffnet eine Datei: $dateizeiger = fopen("dateiname.txt", "r"). Erläutere die Bedeutung des zweiten Parameters für "r","w","r+" und "w+"
- Die Funktionen readfile(), fread() und fgets() dienen zum Lesen in Dateien. Wodurch unterscheiden sie sich?
- Auch folgender Code liest: while(!feof($dateizeiger)) echo fgetc($myfile). Erläutere, was da genau vor sich geht!
- $myfile = fopen("newfile.txt", "w") öffnet eine Datei zum Schreiben. Etwa schon vorhandener Inhalt wird gelöscht. Was muss geändert werden, damit neuer Inhalt hinten angehängt wird?
- Was macht die Funktion rewind($dateizeiger)? (Die Antwort findest du in der PHP Reference unter PHP Filesystem)
Aufgabe 13: Erstelle einen Zähler, der die Seitenaufrufe zählt und den aktuellen Stand in der Datei "zaehler.txt" ablegt. Gelesen wird mit fgets und geschrieben mit fwrite. Achtung: vor dem Schreiben, den Zeiger an den Anfang der Datei setzen. Soll dann so aussehen
Aufgabe 14: Erstelle ein einfaches Gästebuch, das die Kommentare in eine Textdatei schreibt. Soll dann so aussehen. Informationen, wie so etwas einfach geht findest du in gaestebuch.pdf
Studiere das Kapitel "Cookies" in w3schools. Kopiere alle Beispiele in eigene Dateien und probiere sie aus.
Fragen:
- Was ist ein Cookie (gemeint sind die in der Webseite, nicht die in der Keksdose??)?
- Was macht setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/")?
- Wie kann man ein Cookie löschen?
- Warum behauptet das letzte Beispiel (Check ob aktiviert) beim ersten Aufruf, dass Cookies nicht aktiviert seien auch wenn sie in Wahrheit aktiviert sind?
- Einfache Übung (gib den Code ab): Ein Cookie "zaehler" zählt, wie oft der Browser auf der Seite war. Beim ersten Besuch wird es auf 1 gesetzt, bei jedem wieteren Besuch wird das Cookie gelesen, die Zahl um 1 erhöht und das Cookie neu gesetzt. Soll dann so aussehen
Aufgabe 15: Erstelle eine einfache Onlineumfrage, die die Antworten in einer Textdatei speichert und grafisch darstellt. Soll dann so aussehen. Informationen, wie so etwas einfach geht findest du in umfrage.pdf Allerdings ist die Darstellung mit einer Tabelle eher old-style. Versuch es lieber mit CSS-Anweisungen. Das könnte dann so aussehen:Ergebnis