PUNKT KONTROLNY 02
Pętle i formularze: for, while, GET, POST i walidacja
Zanim przejdziesz do selektorów wielokrotnych (Część 07) i struktur tablicowych (Część 08), upewnij się, że bezbłędnie panujesz nad pętlami oraz przesyłaniem i zabezpieczaniem danych z formularzy.
Dlaczego ten punkt kontrolny jest kluczowy?
- Pętle i formularze to ponad 60% punktów części praktycznej egzaminu INF.03: generowanie tabel, odczyt pól i walidacja danych wejściowych.
- Test sprawdza detale, które decydują o zdaniu egzaminu: różnicę między GET a POST, atrybut
name,zabezpieczenie XSS przezhtmlspecialchars()oraz pułapki pętli nieskończonych. - Jeśli popełnisz błąd — nie zgaduj. Skorzystaj z podpowiedzi diagnostycznej i wróć na 5 minut do wskazanego ćwiczenia.
Quiz diagnostyczny — sprawdź swoją pewność
Zaznacz odpowiedzi i kliknij przycisk na dole. Błędne odpowiedzi wskażą Ci dokładnie te ćwiczenia, które warto powtórzyć.
1. Uczeń chciał wygenerować tabelę z trzema wierszami za pomocą poniższego kodu. Jaki błąd popełnił?
<?php for ($i = 1; $i <= 3; $i++) { ?>
<table>
<tr><td>Wiersz <?= $i ?></td></tr>
</table>
<?php } ?>
2. Jaki wynik wyświetli poniższy skrypt sumujący liczby z instrukcją
continue?
<?php
$suma = 0;
for ($i = 1; $i <= 5; $i++) {
if ($i === 3) {
continue;
}
$suma += $i;
}
echo $suma;
?>
3. Dlaczego poniższy kod odliczający w dół zawiesza serwer w nieskończonej pętli?
<?php
$licznik = 5;
while ($licznik > 0) {
echo "<p>Pozostało: $licznik</p>";
if ($licznik === 1) {
$licznik--;
}
}
?>
4. Co pojawi się na ekranie po wykonaniu poniższego fragmentu kodu?
<?php
$x = 10;
do {
echo "START ";
$x++;
} while ($x < 5);
?>
5. Użytkownik wchodzi na stronę
index.php (bez parametrów w URL). Który zapis odczyta parametr bez wywołania ostrzeżenia Undefined array key?
6. Z adresu
index.php?cena=100 pobieramy wartość: $cena = $_GET['cena'];. Jaki typ danych zwróci funkcja gettype($cena)?
7. Użytkownik wpisał frazę ze znakiem cudzysłowu:
Monitor 24". W kodzie użyto zapisu value="<?= $q ?>" bez htmlspecialchars(). Jaki będzie skutek?
8. Jak poprawnie zachować zaznaczenie wybranej opcji w polu
<select name="miasto"> po przesłaniu formularza GET?
9. Dlaczego na egzaminie kod walidacji formularza POST zawsze umieszcza się wewnątrz warunku
if ($_SERVER['REQUEST_METHOD'] === 'POST')?
10. Uczeń utworzył pole
<input type="text" id="email"> (zapomniał atrybutu name). Co pojawi się w $_POST po kliknięciu wyślij?
11. W magazynie jest 0 sztuk towaru (użytkownik wpisał
0). Jaki napis wyświetli poniższy kod i dlaczego?
<?php
$ilosc = filter_var($_POST['ilosc'], FILTER_VALIDATE_INT);
if (!$ilosc) {
echo "BŁĄD";
} else {
echo "OK";
}
?>
12. Hasło musi mieć co najmniej 8 znaków oraz zgadzać się z polem powtórzenia. Który warunek poprawnie wykrywa, że wystąpił BŁĄD rejestracji?
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 | Struktura tabel w pętli oraz break / continue | m04-8 (Wiersze tabeli) oraz m04-5 (Continue) |
| Pytania 3–4 | Pętla while, zmiana stanu i do...while | m04-15 (While i zasoby) oraz m04-10 (Do while) |
| Pytania 5–6 | Odczyt GET, operator ?? i rzutowanie typów | m05-13 (Domyślny GET) oraz m05-14 (Rzutowanie int) |
| Pytania 7–8 | Zabezpieczenie XSS, sticky value i selected | m05-5 (Sticky value) oraz m05-11 (Selected) |
| Pytania 9–10 | POST, REQUEST_METHOD i atrybut name | m06-13 (Formularz POST) oraz m06-4 (REQUEST_METHOD) |
| Pytania 11–12 | Filtry filter_var, pułapka zera i walidacja haseł | m06-8 (Liczba i zero) oraz m06-14 (Zgodność haseł) |