Referenz
zertifizierung-Checkliste
Auszug aus einer typischen Webshop-Prüfarbeit. Was von der zertifizierung-Angabe schon durch dieses Tutorial abgedeckt ist – und was noch offen bleibt.
| Anforderung | Wo umgesetzt |
|---|---|
| Datenbank-Design als Skizze + Zeitschätzung | Kapitel 1, Skizze auf Papier machen |
| Produktliste mit Bild und Bezeichnung | index.php |
| Detailansicht mit allen Eigenschaften | productdetail.php |
| Admin: sicherer Login | login.php + Rollen-Check |
| Admin: Produkte hinzufügen, bearbeiten, freigeben, löschen | statistiken.php (bearbeiten evtl. noch ergänzen) |
| Validierung: keine Fehleingaben, Artikelcode unique | statistiken.php + UNIQUE-Constraint in DB |
| Datenanbindung via Datenbank | durchgehend via PDO |
| Einfaches, sicheres UI | navbar.php + separate Seiten |
| Bestellvorgang mit Login + Warenkorb | cart_*, warenkorb.php, checkout.php |
| Rechnungserstellung | checkout.php (drucken via Strg+P) |
| Statistik: Top 5 meistbestellt | SQL-Cheatsheet #11 |
| Statistik: 5 am seltensten bestellt | SQL-Cheatsheet #12 |
| Statistik: Bestellverlauf 4 Wochen | SQL-Cheatsheet #13 |
| Nur über Admin-Bereich zugänglich | Rollen-Check in statistiken.php |
| Auf beliebigen Geräten verwendbar | Meta-Viewport-Tag, ggf. Media Queries |
| Code kommentiert und strukturiert | durchgehend |
Was noch offen ist:
– E-Mail-Versand der Rechnung (mit
– Bearbeitungs-Formular für bestehende Produkte (analog zum Anlegen)
– Getrennte Rechnungs- und Lieferadresse (extra Tabelle oder Felder in users)
– Zahlung "per Rechnung / Kreditkarte" (im Realprojekt komplex, für zertifizierung reicht Radio-Button ohne Funktion)
– E-Mail-Versand der Rechnung (mit
mail(), falls SMTP konfiguriert)– Bearbeitungs-Formular für bestehende Produkte (analog zum Anlegen)
– Getrennte Rechnungs- und Lieferadresse (extra Tabelle oder Felder in users)
– Zahlung "per Rechnung / Kreditkarte" (im Realprojekt komplex, für zertifizierung reicht Radio-Button ohne Funktion)
Häufigste Prüfer-Fragen zu diesem Projekt:
– Warum Prepared Statements? (SQL Injection)
– Warum
– Warum
– Was ist eine Transaktion? (Atomicity beim Bestellen)
– Warum InnoDB? (FK + Transaktionen)
– Unterschied
– Was passiert bei
– Warum FK auf der "n"-Seite? (Datenbank-Design-Grundlage)
– Was macht
– Warum Prepared Statements? (SQL Injection)
– Warum
password_hash() und nicht md5? (Salt, Geschwindigkeit)– Warum
htmlspecialchars()? (XSS)– Was ist eine Transaktion? (Atomicity beim Bestellen)
– Warum InnoDB? (FK + Transaktionen)
– Unterschied
query() vs. prepare()? (mit vs. ohne User-Input)– Was passiert bei
1 - freigeben? (Toggle-Trick)– Warum FK auf der "n"-Seite? (Datenbank-Design-Grundlage)
– Was macht
session_regenerate_id()? (Session Fixation Schutz – für Bonuspunkte einbauen)