PHP und MySQL
1.1 - Einführung in PHPPHP
- Allgemeines über PHP
- Anwendungen von PHP
- Vorteile von PHP
- Ausführungsort (Client-Server-Modell)
- Sicherheit von PHP
- Lernhandout
1.2 - XAMPPEnvironment
- Was ist XAMPP?
- Unterschied zwischen DEV und PROD
- XAMPP Paket und Tools
- Aufruf über localhost
- Das /htdocs Verzeichnis
- Übung A: Installation von XAMPP
- Lernhandout
1.3 - EditorenEnvironment
- Was ist ein guter Editor?
- Anforderungen
- Kostenlose und -pflichtige Editoren
- IDE
- Lernhandout
2.1 - EinstiegPHP
- PHP Code einbetten
- PHP Markierung
- HTML Konstrukt
- Abspeichern als .php
- Übung A: Eine Vorlage für PHP Übungen
- Lernhandout
2.2 - Ausgabe mit echoPHP
- Der echo Befehl
- Befehlsatzende mit Semikolon
- Ausgabe von HTML mit echo
- einfache und doppelte Anführungszeichen
- entwerten mit Backslash
- Zeilenschaltung mit \r\n
- Lernhandout
2.3 - VariablenPHP
- Variablendeklaration mit $
- Eigenschaften von Variablen
- Stringverkettung
- Ausgabe mit echo
(Auswirkung von Anführungszeichen)
- Gültigkeit von Variablen
- Löschen unset
- Lernhandout
2.4 - PHP und MathematikPHP
U 2.4 - Operatoren
- Übung A: Palatschinken Rezept
- Übung B: Hintergrundfarbe
- Übung C: Optimale Bestellmenge
- Übungsblatt
3.1 - if VerzweigungPHP
- Syntax von if(...) {...}
- Vergleichsoperatoren
- elseif(...) {...}
- else {...}
- Lernhandout
3.2 - Logische OperatorenPHP
- Was sind logische Operatoren?
- Liste der logischen Operatoren
(UND, ODER, Entwender-Oder)
- Codebeispiel
- Bedingte Gruppierung mit Klammern
- Lernhandout
3.3 - Wertübergabe $_POSTPHP
- Werte mit $_POST übergeben
- Das <form> Element
- Die Attribute action und method
- name Attribut des Eingabefeld
- Werte zu sich selbst schicken
- <form> ohne action
- Variablenprüfung mit isset()
- Lernhandout
3.4 - Wertübergabe $_GETPHP
- Werte mit $_GET übergeben
- Aufbau einer URL
- Auslesen des Query String
- <form> mit method="get"
- Lernhandout
3.5 - Files lesenPHP
- Lesen von Plain-Text
- Arten von Plain-Text-Files
- Erstelle die Datei inhalte.txt
- Einlesen mit file_get_contents()
- Prüfung auf Existenz
mit file_exists()
- Alternative is_readable()
- Einlesen einer Webseite über die URL
- Lernhandout
3.6 - Files schreibenPHP
U 3.3 - $_POST Variablen
- Übung A: Einfaches Anmeldeformular
- Übung B: Kalorienrechner Grundumsatz
- Übung C: Mathetrainer - Addition
- Übungsblatt
U 3.4 - $_GET Variablen
- Übung A: Umsatzsteuer
- Übung B: Palatschinken Rezept II
- Übung C: URL Generator
- Übungsblatt
U 3.6 - Files schreiben
4.1 - FunktionenPHP
- Was ist eine Funktion?
- Wertübergabe und -übernahme
- Syntax von function(...) {...}
- Vergleichsoperatoren
- Rückgabe mit return
- Gültigkeit von Variablen
- Globale Variablen
$GLOBALS["name"]
- Der exit; Befehl
- Auslagern von PHP Code
- Einbinden mit include
- Lernhandout
4.2 - FehlermeldungenPHP
- Über das Fehlerreporting von PHP
- Fehlerhandling für DEV und PROD
- Alle Fehler und Warnungen anzeigen
error_reporting(E_ALL);
ini_set('display_errors', 1);
- Fehler und Warnungen abschalten
error_reporting(0);
ini_set('display_errors', 0);
- Kommentarfunktion für die Fehlersuche
// Einzeiliges Kommentar
/* Mehrzeiliges Kommentar */
- Lernhandout
4.3 - TypumwandlungPHP
- PHP und Variablentypen
- Typ ermitteln mit gettype($var)
- Informationen über eine Variable
var_dump($var)
- Typ ändern mit settype($var, 'type')
- Weitere Typumwandlungen
intval($var) und floatval($var)
- Prüfung auf einen nummerischen Wert
is_numeric($var)
- Lernhandout
U 4.3 - Typumwandlung
- Übung A: Variablentabelle
- Übung B: Typbestimmung
- Übung C: Besucherzähler
- Übungsblatt
5.1 - String FunktionenPHP
- Wozu String Funktionen?
- Suchen und ersetzen in einem String
str_replace()
- Weitere Funktionen zum Ersetzen str_ireplace()
substr_replace()
- Groß- und Kleinbuchstaben
strtolower()
strtoupper()
ucfirst()
- Leerzeichen und Whitespace entfernen
trim()
- Lernhandout
5.2 - Zeichen escapenPHP
- Wozu Zeichen escapen?
- In HTML-Code wandeln
htmlentities()
- Parameter
ENT_QUOTES
ENT_HTML5
"UTF-8"
- HTML Code dekodieren
html_entity_decode()
- Zeilenschaltungen wandeln
nl2br()
- Lernhandout
- HTML Zeichenreferenz
5.3 - TextoperationenPHP
- Zeichenlänge ermitteln mit strlen()
- Position eines Textteil ermitteln
strpos()
- Einen Teilstring ausschneiden
substr()
- Lernhandout
U 5.2 - Zeichen escapen
- Übung A: Kommentarfunktion
- Übung B: Schwarzes Brett
- Übung C: Gästebuch
- Übungsblatt
6.1 - Arrays (indiziert)PHP
- Was ist ein Array?
- Indiziertes Array array()
- Einen Wert ausgeben
- Einen Wert zuweisen
- Einen Wert hinzufügen
- Einen Wert löschen mit unset()
- Informationen ausgeben mit var_dump()
- Lernhandout
6.2 - Arrays (assoziiert)PHP
- Syntax eines assoziierten Array
- Werte ändern
- Werte hinzufügen
- Schlüssel-Wertpaare löschen
unset()
- Lernhandout
6.3 - Arrays (multidim)PHP
- Was ist ein mehrdimensionales Array?
- Mehrdimensionales indiziertes Array
- Mehrdimensionales assoziiertes Array
- Zugriff auf Array-Werte mit Variablen
- Lernhandout
6.4 - Array FunktionenPHP
- Array aus einem String erzeugen
explode()
- Element am Anfang hinzufügen
array_unshift()
- Element am Ende hinzufügen
array_push()
- Erstes Element entfernen
array_shift()
- Letztes Element entfernen
array_pop()
- Lernhandout
6.5 - Arrays analysierenPHP
- Elemente zählen
count()
- Summe von Elementwerten
array_sum()
- Einen Wert im Array suchen
array_search()
- Schlüssel-Prüfung
array_key_exists()
- Lernhandout
6.6 - Arrays sortierenPHP
- Sortieren mit sort()
- Natürliches Sortieren mit natsort()
- Infos ausgeben mit print_r()
- Die Reihenfolge umdrehen mit array_reverse()
- Zufallsgenerator für Arrays
shuffle()
- Lernhandout
6.7 - Arrays und JSONPHP, JSON
- Über die JavaScript Objekt Notation
- In JSON wandeln mit json_encode()
- In ein PHP Array wandeln mit
json_decode()
- Array-Wertübergabe mit POST und JSON
- Lernhandout
U 6.3 - Arrays (multidim)
- Übung A: Die zwölf Monate
- Übung B: Wochentage
- Übung C: Obstvergleich
- Übungsblatt
U 6.7 - Arrays und JSON
- Übung A: Newsroom
- Übung B: Fünf-Sterne-Bewertung
- Übung C: Fünf-Sterne-Bewertung II
- Übungsblatt
7.1 - for SchleifePHP
- Was ist eine Zählschleife?
- Die Syntax einer Zählschleife
for(Start, Bedingung, Schritte) {...}
- Einen Schritt überspringen
continue;
- Die Schleife verlassen
break;
- Lernhandout
7.2 - while SchleifePHP
- Was ist eine while-Schleife?
- Syntax einer kopfgesteuerten Schleife
while(Bedingung) {...}
- Syntax einer fussgesteuerten Schleife
do{...} while(Bedingung)
- Endlosschleife mit Abbruchbedingung
break;
- Lernhandout
7.3 - foreach SchleifePHP
- Was ist eine foreach-Schleife?
- Syntax einer foreach Schleife
foreach($array as $wert) {...}
- Syntax einer foreach Schleife mit Schlüssel
foreach($array as $key => $wert) {...}
- Verschachtelte foreach Schleife für mehrdimensionale Arrays
- Lernhandout
U 7.1 - for Schleife
- Übung A: Multiplikationstabelle
- Übung B: Schabrett Muster
- Übung C: Mathe-Trainer - Bruchrechnung
- Übung D: Römische Zahlen
- Übungsblatt
U 7.2 - while Schleife
- Übung A: Primfaktoren-Zerlegung
- Übung B: Bingo
- Übungsblatt
U 7.3 - foreach Schleife
- Übung A: Fünf-Sterne-Bewertung II
- Übung B: Einkaufsliste
- Übung C: Hyperlinks einer Webseite
- Übungsblatt
8.1 - ZeitPHP
- Wie arbeitet PHP mit der Zeit?
- Was ist der UNIX-Timestamp?
- Die aktuelle Zeit ermitteln mit time();
- Mit dem UNIX-Timestamp rechnen
- Den Timestamp eines bestimmten Datums ermitteln
strtotime()
- Das lokale Datum mit getdate()
- Lernhandout
8.2 - DatumPHP
- Einen UNIX-Timestamp lesbar machen
- Das date(); Objekt
- Formatieren mit date();
- Parameter-Liste für das Zeitmuster
- Lernhandout
8.3 - Zeit MethodenPHP
- Wochentag und Monat in Deutsch
- Die Alternative: strftime()
- Zeitzonen
date_default_timezone_set()
- UNIX-Timestamp mit Mikrosekunden
microtime(true)
- Lernhandout
- Zeitzonen (php.net)
U 8.3 - Zeit Methoden
- Übung A: Welcher Wochentag
- Übung B: Sternzeichen
- Übungsblatt
9.1 - headerPHP
- Was ist ein HTTP-Header?
- PHP Redirect (Weiterleitung)
header("Location: URL")
- Der exit; Befehl
- Ein Redirect zum Schutz eines Verzeichnisses
- Cache-Control (Zwischenspeichern verhindern)
- Einen Download erzwingen
- Lernhandout
9.2 - CookiesPHP | JS
- Was sind Cookies?
- Cookies definieren mit setcookie()
- Ein Cookie ausgeben
- Cookies löschen
- Cookies und JavaScript
- Lernhandout
9.3 - SessionPHP
- Was ist eine Session?
- Der Browser muss Cookies akzeptieren!
- Session-ID für die Sitzung
- Eine Session starten mit session_start()
- Die Supergloblen $_SESSION Variablen
- Session-Variablen löschen
- Session-ID auslesen bzw. setzen
session_id()
- Session-Status session_status()
- Lernhandout
9.4 - MailPHP
- Eine eMail versenden mit mail()
- Syntax der mail() Funktion
- Der header eine eMail
- Eine HTML eMail versenden
- Lernhandout
U 9.3 - Session
U 9.4 - Mail
- Übung A: Kontaktformular
- Übung B: Verfikationslink
- Übungsblatt
10.1 - phpMyAdmin EinstiegMySQL
- Wozu Datenbanken?
- Was ist SQL?
- xampp und phpMyAdmin
- phpMyAdmin starten
http://localhost/phpmyadmin/
- Eine neue Datenbank anlegen
- Kollation (Zeichensatz) der Datenbank
- Die Konsole von phpMyAdmin
- Datenbank anlegen mit
CREATE DATABASE schulDB;
- SQL Befehle sind Case-Insensitiv
- Lernhandout
10.2 - phpMyAdmin BenutzerMySQL
- Benutzerrollen (root)
- Einen neuen Benutzer anlegen
- Unterscheidung von PROD und DEV
- Benutzer in phpMyAdmin anlegen
- Anmeldeinformationen definieren
- Lernhandout
10.3 - phpMyAdmin TabelleMySQL
- Relationale Datenbanken
- Aufbau einer Tabelle
- Fachbegriffe: Entität, Attribute, Datensatz
- Eine Tabelle anlegen
- Datentypen (int, varchar, timestamp)
- Primärschlüssel (primary key)
- Automatisches Hochzählen (auto-increment)
- Standard für Timestamp CURRENT_TIME
- Lernhandout
10.4 - phpMyAdmin TypenMySQL
- Warum Typen definieren?
- Tabelle mit den wichtigsten Typen
- SQL Befehl um eine Tabelle zu erstellen
- Lernhandout
10.5 - phpMyAdmin EingabeMySQL
- Werte in die Tabelle eingeben
- Die phpMyAdmin Eingabemaske
- Einschränkungen und Zusätze der Spalten
- Vier Benutzer anlegen
- Lernhandout
10.6 - phpMyAdmin StrukturMySQL
- Tabellenstruktur ändern
- Mögliche Aktionen der Strukturveränderung
- Eine neue Spalte hinzufügen
- Eine Tabelle anzeigen
- Werte im nachhinein ändern
- Lernhandout
10.7 - phpMyAdmin KonsoleMySQL
- Die Konsole von phpMyAdmin
- SQL Befehle sind Case-Insensitve
- SQL Befehle absetzen/abrufen
- SELECT Abfrage
- Einen Datensatz hinzufügen mit INSERT
- Einen Wert ändern mit UPDATE
- Lernhandout
10.8 - phpMyAdmin ExportMySQL
- Mit phpMyAdmin exportieren
- Exportieren einer Tabelle im SQL Format
- SQL-Kommentare
- Weitere Export-Formate
z. B. CSV, PDF, PHP Array, JSON usw.
- Lernhandout
U 10.5 - phpMyAdmin Eingabe
- Übung A: Fischereiverein Datenbank
- Übung B: Fischereiverein Mitgliedertabell
- Übung C: Fischereiverein Zahlungen
- Übungsblatt
U 10.6 - phpMyAdmin Struktur
- Übung D: Fischereiverein neue Mitglieder
- Übung E: Fischereiverein eMail-Adressen
- Übung F: Fischereiverein Daten ändern
- Übungsblatt
12.1 - mysqli_connect()PHP MySQL
- Zugriff auf eine Datenbank mit PHP
- mysqli_connect()
- Die MedienDB anlegen
- Benutzer für die MedienDB
- Verbindung zur MedienDB mit PHP
- Rückgabe des mysqli_connect Objekt
- Fehlermeldungen mit
mysqli_connect_error()
- Lernhandout
- MedienDB.sql
- Medienbetriebe.sql
12.2 - mysqli_query()PHP MySQL
- SQL Befehle als String formulieren
- Einen SQL Befehl absetzen
mysqli_query()
- In ein Array speichern
mysqli_fetch_all()
- Datenbankverbindung schließen
mysqli_close()
- Parameter von mysqli_fetch_all()
- Ein Array mit einer Zählschleife ausgeben
- Lernhandout
12.3 - mysqli_num_rows()PHP MySQL
- Anzahl der Datensätze ermitteln
mysqli_num_rows()
- Anzahl der betroffenen Zeilen
mysqli_affected_rows()
- Lernhandout
12.4 - mysqli_fetch_assoc()PHP MySQL
- Datensätze einzeln abfragen mit
mysqli_fetch_assoc() und while
- Lernhandout
12.5 - Beispiel SELECTPHP MySQL HTML
- Einfaches Suchformular in HTML
- Suchstring erzeugen (trim, Platzhalter)
- SELECT-Abfrage mit LIKE
- Ausgabe des Sucheregenis
- Links für Löschen und Bearbeiten
mittels URL-Query (GET)
- Lernhandout
- Kap12_Beispiel.zip
12.6 - Beispiel DELETEPHP MySQL
- Löschen eines Datensatz
- Auswerten einer GET Variable
- Löschbefehl (DELETE) absetzen
- Löschergebnis prüfen mit
mysqli_affected_rows()
- Lernhandout
- Kap12_Beispiel.zip
12.7 - Beispiel UPDATEPHP MySQL HTML
12.8 - Beispiel INSERTPHP MySQL HTML
U 12.8 - Beispiel PHP & MySQL
13.1 - DateifunktionenPHP
- Verzeichnis erstellen - mkdir()
- Datei umbenennen - rename()
- Verzeichnis umbenennen - rename()
- Datei kopieren - copy()
- Datei löschen - unlink()
- Verzeichnis löschen - rmdir()
- Lernhandout
13.2 - DateirechtePHP
- Zugriffsrechte in Linux
- Besitzer, Gruppe und Alle
- Rechte:
Lesen = r bzw. 4
Schreiben = w bzw. 2
Ausführen = x bzw. 1
- Systemkonfiguration beachten
- Numerische Zugriffsrechte über ein OKTAL
- Rechte ändern mit chmod()
- Rechte kurzzeitig ändern
- Lernhandout
13.3 - DateiinformationenPHP
- Übungsdatei zufall.txt erstellen.
- Existenzprüfung
file_exists()
is_file()
is_readable()
is_executable()
file_writeable()
- Dateigröße filesize()
- MIME-Typ mime_content_type()
- Pfadinfos pathinfo()
- Weitere Infos stat()
z. B. Zugriffdatum
- Lernhandout
13.4 - DateiuploadPHP HTML
- Eine Datei hochladen
- Form Attribut
enctype="multipart/form-data"
- Fild Attribut type="file"
- Das $_FILES Array
- move_uploaded_file() Funktion
- Die $_FILES Eigenschaften
name, type, size, tmp_name, error
- Lernhandout
13.5 - Verzeichnis RekursionPHP
- Was ist eine Rekursion?
- Beispiele für Rekursionen
- Rekursives Auslesen eines Verzeichnis
- Verzeichnis-Handler opendir()
- Verzeichnis lesen mit readdir()
- Erläuterungen zum Beispiel
- Lernhandout
- Beispiel_Tree.zip
U 13.4 - Dateiupload
- Übung A: Sharepoint
- Übung B: CSV-Datei in einer Tabelle
- Übungsblatt
14.1 - ObjektorientiertPHP
- OOP: Objektorientierte Programmierung
- Vorteile der OOP
- Klassen, Eigenschaften und Methoden
- Schlüsselwort class
- Instanziierung mit new
- OOP Beispiel: Bankkonto
- Mit -> Pfeil auf
Methoden und Eigenschaften zugreifen
- Lernhandout
14.2 - SimpleXMLPHP XML
- Über XML (Extensible Markup Language)
- Das SimpleXML Objekt
- XML String innerhalb von PHP
- XML String als Objekt vereinbaren mit
simplexml_load_string()
- XML Knotenwert ausgeben
- XML Knotenwert verändern
- Als .xml Datei speichern mit
saveXML()
- Eine .xml Datei laden mit
simplexml_load_file()
- Aus XML ein assoziatives Array
erstellen mit JSON
- Lernhandout
U 14.1 - Objektorientiert
- Übung A: OOP Sichtbarkeiten
- Übung B: OOP Konstruktor
- Übung C: OOP Vererbung
- Übung D: OOP GET und SET Methoden
- Übungsblatt
15.1 - Image und GD2PHP
- Bild als PHP File darstellen
- header und Content-type
- Ein jpeg Bild laden
- Bildbreite und -höhe ermitteln
imagesx() und imagesy()
- Bild skalieren imagescale()
- jpeg Bild anzeigen mit imagejpeg()
- Speicher freigeben imagedestroy()
- Bild speichern und Qualität ändern
Weitere Parameter von imagejpeg()
- Einbinden in den HTML Code mit img
- Lernhandout
- adam.jpg
15.2 - PNG skalierenPHP
- Ein PNG mit transparentem Hintergrund skalieren
- Das Problem mit imagescale()
- Ein PNG Header
- Erstellen eines neuen leeren Bildes
imagecreatetruecolor()
- Alphakanal für die Transparenz definieren
- Bild kopieren mit imagecopyresized()
- PNG darstellen imagepng()
- Lernhandout
- drucker.png
15.3 - Text auf ImagePHP
15.4 - TortendiagrammPHP
U 15.3 - Text auf Image
- Übung A: Bild-Anzeige
- Übung B: Image Resizer
- Übung C: Einfaches Captcha
- Übungsblatt
16.1 - Sicherheit EingabePHP
- BENUTZEREINGABEN
- Kritische Zeichen escapen
- Sicherheitsrisiko: Superglobale Variablen
$_GET
- Sinn der Eingabe
- Typ einer Eingabe prüfen
- Wert einer Eingabe prüfen
- Division durch Null
- HTML Elemente sinnvoll nutzen
- Prüfung mit if(isset())
- Lernhandout
16.2 - Sicherheit XSSPHP
- CROSS-SITE SCRIPTING (XSS)
- XSS am Beispiel JavaScript
- PHP Code mit ungefilterter Eingabe/Ausgabe
- Ein unerwünschtes Dialogfenster
- Immer neu laden (Endlos)
- Umleitung zu einer fremde Website
- Umleitung mit Cookie-Informationen
- Zwischenspeichern (z. B. MySQL, JSON)
- Gefahr: Einbinden von fremden Code
z.B. include, script src, iframe, link, img usw.
- Lernhandout
16.3 - Sicherheit SQLPHP SQL
- DATENBANKSICHERHEIT
- Einschleusen von SQL Code
(SQL Injection)
- Problem des einfachen Apostroph
- Andere SQL Zeichen
- SQL Zeichen escapen
str_replace()
mysqli_real_escape_string()
- Weitere Sicherheitsmaßnahmen
Rollenbasierte Berechtigungen
Starke Passwörter
Datenbank-Administration
PHP-Sicherheitseinstellungen
- Lernhandout
16.4 - Sicherheit PasswörterPHP
- PASSWORT SICHERHEIT
- Über sichere Passwörter
- Passwörter verschlüsseln
- Sichere Übertragung von Passwörtern
- Verschlüsselungsalgorithmen
- Password Hashing API
- HASH generieren mit
passwort_hash()
- HASH und Passwort prüfen mit
passwort_verfiy()
- Zusätzlicher Schutz (openSSL, Kryptographie)
- Lernhandout
16.5 - SicherheitshinweisePHP
- Formel: Denkfaulheit == Sicherheitsrisiko
- Unnötige Technologien abschalten!
- Dateirechte vergeben!
- Intelligente Serveradministration!
- Zertifikate verwenden!
- Fehler und Warnungen in der PROD abschalten!
- Saubere Programmierung!
- Verzeichnisse schützen!
- Scriptsicherheit erhöhen mit php.ini!
- Website testen!
- Lernhandout
U 17.1 - Projekte
- Projekt A: Webchat
- Projekt B: Social-Media-Plattform
- Projekt C: Sicherheitskonzept
- Projekt D: Springerschach
- Projekt E: Freies Projekt
- Übungsblatt
U 17.2 - Projekte Wirtschaft
- Projekt A: Kassabuch
- Projekt B: Anlagenbuchhaltung
- Projekt C: Ticketverkauf
- Projekt D: Finanzmathematik
- Projekt E: Freies Projekt
- Übungsblatt
