W budowie
Prezentacja modułu

Część 05 · Formularz: odczyt danych metodą GET — kurs PHP INF.03

Część 05 kursu PHP pod kątem INF.03: Formularz: odczyt danych metodą GET. Teoria w skrócie i 16 ćwiczeń z automatycznym sprawdzaniem — odczyt parametrów, rzutowanie typów, htmlspecialchars, paginacja w linkach i zapamiętywanie stanu pól formularza.

  • 45 min
  • 16 slajdów
  • Notatki nauczyciela: N
  • Strona modułu: otwórz
Plan · 45 min

Co dziś robimy

  1. 12 minFormularz i metoda GET Każde pole musi mieć atrybut name — to właśnie ta nazwa staje się kluczem w tablicy $_GET…
  2. 12 minOdczyt danych i isset Dlatego najpierw sprawdzamy isset() , a przy pustych polach empty() .
  3. 12 minBezpieczne wypisanie danych Rozwiązaniem jest htmlspecialchars() z flagami ENT_QUOTES i kodowaniem UTF-8: zamienia…
  4. 4 minĆwiczenia 16 zadań w module — wybierz 3–4 na lekcję
  5. 5 minPodsumowanie bilet wyjściowy i zadanie domowe
Atom 1 z 4 · ~12 min

Formularz i metoda GET

Formularz HTML wysyła dane pod adres podany w atrybucie action , a sposób przesyłania określa method . Przy get dane trafiają do adresu po znaku zapytania, więc widać je w pasku przeglądarki.

  • Każde pole musi mieć atrybut name — to właśnie ta nazwa staje się kluczem w tablicy $_GET po stronie PHP.
  • Pole bez name nie zostanie wysłane.
  • Metody GET używamy do wyszukiwania i filtrów, bo wynik można dodać do zakładek.
  • Do haseł i danych zmieniających stan służy POST.
Kod · atom 1 · ~3 min

Jak to wygląda w kodzie

echo '<form method="get" action="">';
echo '<input type="text" name="imie" placeholder="Imie">';
echo '<button type="submit">Wyslij</button>';
echo '</form>';

if (isset($_GET['imie'])) {
    echo '<p>Wpisano: ' . htmlspecialchars($_GET['imie']) . '</p>';
}
Przykład na żywo · atom 1 · ~3 min

Uruchom i pokaż

echo '<form method="get" action="">';
echo '<input type="text" name="imie" placeholder="Imie">';
echo '<button type="submit">Wyslij</button>';
echo '</form>';

if (isset($_GET['imie'])) {
    echo '<p>Wpisano: ' . htmlspecialchars($_GET['imie']) . '</p>';
}
Sprawdzenie · atom 1 · ~2 min

Pytanie do klasy

Gdzie trafiają dane z GET?

Atom 2 z 4 · ~12 min

Odczyt danych i isset

Dane z formularza są w tablicy $_GET (lub $_POST ). Odwołujemy się do nich nazwą pola: $_GET['imie'] . Jeśli pole nie zostało wysłane, PHP zgłosi ostrzeżenie o nieistniejącym kluczu.

  • Dlatego najpierw sprawdzamy isset() , a przy pustych polach empty() .
  • Wartość domyślną najprościej ustawić operatorem ??
  • Pamiętaj, że przeglądarka wysyła także ukryte pola i przyciski — każdy element z name znajdzie się w tablicy, o ile nie jest wyłączony.
Kod · atom 2 · ~3 min

Jak to wygląda w kodzie

$imie = isset($_GET['imie']) ? trim($_GET['imie']) : '';
$klasa = $_GET['klasa'] ?? 'brak';

if ($imie === '') {
    echo 'Nie podano imienia';
} else {
    echo 'Uczen: ' . htmlspecialchars($imie);
}

echo '<p>Klasa: ' . htmlspecialchars($klasa) . '</p>';
Przykład na żywo · atom 2 · ~3 min

Uruchom i pokaż

$imie = isset($_GET['imie']) ? trim($_GET['imie']) : '';
$klasa = $_GET['klasa'] ?? 'brak';

if ($imie === '') {
    echo 'Nie podano imienia';
} else {
    echo 'Uczen: ' . htmlspecialchars($imie);
}

echo '<p>Klasa: ' . htmlspecialchars($klasa) . '</p>';
Sprawdzenie · atom 2 · ~2 min

Pytanie do klasy

Co sprawdza isset()?

Atom 3 z 4 · ~12 min

Bezpieczne wypisanie danych

Wszystko, co pochodzi od użytkownika, jest niezaufane. Wypisanie takiej wartości bez zabezpieczenia pozwala wstrzyknąć HTML lub skrypt — to atak XSS.

  • Rozwiązaniem jest htmlspecialchars() z flagami ENT_QUOTES i kodowaniem UTF-8: zamienia znaki specjalne na encje, a przeglądarka pokazuje je jako tekst.
  • Funkcji używamy przy każdym wypisaniu danych z formularza, bazy czy adresu — także w atrybutach HTML, na przykład w value pola.
Kod · atom 3 · ~3 min

Jak to wygląda w kodzie

$komentarz = '<b>Super!</b> <script>alert(1)</script>';

echo '<p>Bez zabezpieczenia:</p>';
echo '<div>' . $komentarz . '</div>';

echo '<p>Po zabezpieczeniu:</p>';
echo '<div>' . htmlspecialchars($komentarz, ENT_QUOTES, 'UTF-8') . '</div>';
Przykład na żywo · atom 3 · ~3 min

Uruchom i pokaż

$komentarz = '<b>Super!</b> <script>alert(1)</script>';

echo '<p>Bez zabezpieczenia:</p>';
echo '<div>' . $komentarz . '</div>';

echo '<p>Po zabezpieczeniu:</p>';
echo '<div>' . htmlspecialchars($komentarz, ENT_QUOTES, 'UTF-8') . '</div>';
Sprawdzenie · atom 3 · ~2 min

Pytanie do klasy

Przed czym chroni htmlspecialchars()?

Zamknięcie · ~3 min

Co zabrać z lekcji

  • Każde pole musi mieć atrybut name — to właśnie ta nazwa staje się kluczem w tablicy $_GET po stronie PHP.
  • Dlatego najpierw sprawdzamy isset() , a przy pustych polach empty() .
  • Rozwiązaniem jest htmlspecialchars() z flagami ENT_QUOTES i kodowaniem UTF-8: zamienia znaki specjalne na encje, a przeglądarka pokazuje je jako tekst.
  • Ćwiczenia
Bilet wyjściowy: Które dane wymagają zabezpieczenia?
Odpowiedź: b) Wszystkie od użytkownika
Hyżyk· Część 05 · Formularz: odczyt danych metodą GET — kurs PHP IN moduł 1 / 1