PUNKT KONTROLNY 07 · FINAŁ KURSOWY
Pliki, architektura aplikacji i synteza CKE: upload, wzorzec PRG, PDO i arkusze egzaminacyjne
Części 19–21 to zwieńczenie całego kursu PHP. Zamiast izolowanych instrukcji budujesz tu kompletne, produkcyjne mechanizmy: bezpieczny odbiór plików przesyłanych przez formularze, wzorzec Post-Redirect-Get chroniący przed powielaniem zamówień po odświeżeniu strony, obiektowy dostęp do danych przez PDO oraz pełne arkusze egzaminacyjne INF.03 / EE.09.
Ten quiz diagnostyczny weryfikuje Twoją wiedzę techniczną oraz zrozumienie dobrych praktyk programistycznych wymaganych na egzaminie zawodowym i w pracy zawodowej technika programisty.
Zakres sprawdzianu
- Operacje na plikach i przesyłanie plików na serwer (Część 19): zapis raportów przez
file_put_contents(),dopisywanie logów z flagąFILE_APPEND,atrybut formularzaenctype="multipart/form-data",tablica$_FILES,kody błędów uploadu, walidacja rozszerzenia oraz bezpieczne przenoszenie plików funkcjąmove_uploaded_file()z unikalną nazwą. - Architektura aplikacji webowej i standard PDO (Część 20): wzorzec Post-Redirect-Get (PRG) z nagłówkiem
Locationi obowiązkowymexit;,komunikaty jednorazowe Flash w sesji z natychmiastowymunset(),formularze z pamięcią wartości (Sticky Form) odporne na XSS oraz obiektowe połączenia i zapytania z parametrami nazwanymi w standardzie PDO. - Synteza i symulacje arkuszy egzaminacyjnych CKE (Część 21): relacyjne zapytania
INNER JOINz parametrami, bezpieczne haszowanie haseł algorytmem Bcrypt (password_hashipassword_verify), transakcyjna modyfikacja wielu tabel, usuwanie rekordów bezpiecznym żądaniem POST oraz wzorcowa architektura kodu PHP bez błędu „Headers already sent”.
Quiz diagnostyczny — sprawdź swoją gotowość do egzaminu
Zaznacz odpowiedzi i kliknij przycisk na dole. Błędne odpowiedzi wskażą Ci dokładnie te ćwiczenia, które warto powtórzyć przed egzaminem.
<input type="file" name="zdjecie">. Po jego zatwierdzeniu tablica $_FILES['zdjecie'] jest pusta lub zawiera błąd UPLOAD_ERR_NO_FILE, mimo że użytkownik wskazał plik na dysku. Co jest najbardziej prawdopodobną przyczyną tego problemu?
$_FILES['plik']['type'] (MIME type) jest krytycznym błędem bezpieczeństwa aplikacji?
move_uploaded_file($plik['tmp_name'], 'obrazy/' . $plik['name']);. Jakie poważne zagrożenie niesie za sobą bezpośrednie użycie oryginalnej nazwy $_FILES['plik']['name']?
wizyty.log. Użyto wywołania: file_put_contents('wizyty.log', $wpis);. Jaki będzie rezultat działania tego skryptu przy wielokrotnych wizytach użytkowników?
header('Location: index.php'); exit;?
<input name="miasto"> (Sticky Form)?
mysqli przy zapytaniach z parametrami?
zamowienia (kolumny id, data, kwota) i klienci (kolumny imie, nazwisko). Jak wygląda poprawna konstrukcja takiego zapytania SQL z parametrem?
id) należy realizować żądaniem POST z ukrytym polem i przyciskiem, a NIE zwykłym linkiem <a href="usun.php?id=5">?
Matryca powtórek
Jeśli po kliknięciu sprawdzenia któreś pytanie zaznaczyło się na czerwono, poniższa tabela wskazuje dokładne ćwiczenie, które pozwoli Ci to przećwiczyć w praktyce:
| Pytania | Obszar wiedzy | Rekomendowane ćwiczenie |
|---|---|---|
| Pytania 1–2 | Atrybut enctype="multipart/form-data" oraz bezpieczna walidacja typu i rozszerzenia pliku | m19-9 (Pierwszy upload pliku) oraz m19-13 (Biała lista rozszerzeń graficznych) |
| Pytania 3–4 | Generowanie unikalnej nazwy pliku przez uniqid() oraz dopisywanie logów flagą FILE_APPEND | m19-15 (Upload z unikalną nazwą pliku) oraz m19-2 (Dopisywanie do logu z FILE_APPEND) |
| Pytania 5–6 | Ochrona przed F5 wzorcem Post-Redirect-Get (PRG) oraz jednorazowe komunikaty Flash w sesji | m20-3 (Pierwszy wzorzec PRG) oraz m20-5 (Komunikat Flash sukcesu w sesji) |
| Pytania 7–8 | Formularz z pamięcią (Sticky Form) z ENT_QUOTES oraz parametry nazwane w standardzie PDO | m20-6 (Formularz Sticky Form) oraz m20-13 (PDO: parametry nazwane) |
| Pytania 9–10 | Relacyjne złączenia INNER JOIN z parametrami oraz standard password_hash i password_verify | m21-11 (Profil klienta i JOIN) oraz m21-9 (Rejestracja i password_hash) |
| Pytania 11–12 | Architektura pliku bez błędu "Headers already sent" oraz bezpieczne usuwanie żądaniem POST | m21-15 (Wielokrokowa synteza CKE) oraz m21-16 (Grand Finale: CRUD i statystyki) |