W budowie
Punkt kontrolny · Diagnostyka Sprawdź swoją wiedzę przed wejściem w pola wyboru i tablice

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 przez htmlspecialchars() 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:

PytaniaObszar wiedzyRekomendowane ćwiczenie
Pytania 1–2Struktura tabel w pętli oraz break / continuem04-8 (Wiersze tabeli) oraz m04-5 (Continue)
Pytania 3–4Pętla while, zmiana stanu i do...whilem04-15 (While i zasoby) oraz m04-10 (Do while)
Pytania 5–6Odczyt GET, operator ?? i rzutowanie typówm05-13 (Domyślny GET) oraz m05-14 (Rzutowanie int)
Pytania 7–8Zabezpieczenie XSS, sticky value i selectedm05-5 (Sticky value) oraz m05-11 (Selected)
Pytania 9–10POST, REQUEST_METHOD i atrybut namem06-13 (Formularz POST) oraz m06-4 (REQUEST_METHOD)
Pytania 11–12Filtry filter_var, pułapka zera i walidacja hasełm06-8 (Liczba i zero) oraz m06-14 (Zgodność haseł)