Dataczwartek, 13 sierpnia 2026 Czas17:55:04
← Aplikacje internetowe (PHP)

Lekcja 7. Formularze HTML i odbiór danych (GET, POST)

Średni

Po co się tego uczymy?

Rejestracja, logowanie, wyszukiwarka, dodawanie komentarza — wszystko to zaczyna się od formularza HTML. To jest most między użytkownikiem a Twoim kodem PHP, absolutnie kluczowy dla reszty tego działu (rejestracja, logowanie i koszyk w kolejnych lekcjach bez tego się nie obejdą).

Teoria

Do tej pory dane w skryptach wpisywałeś na sztywno w kodzie. Teraz nauczysz się odbierać dane wpisane przez UŻYTKOWNIKA w formularzu HTML — to jest właśnie moment, w którym strona zaczyna prawdziwie "rozmawiać" z odwiedzającym.

Formularz HTML wysyła dane jedną z dwóch metod:
GET — dane trafiają do adresu URL (widoczne w pasku przeglądarki, np. ?szukaj=matrix). Dobre do wyszukiwania, złe do haseł (widoczne każdemu!).
POST — dane wysyłane są "w tle", niewidoczne w adresie URL. Używany do formularzy logowania, rejestracji, dodawania danych.

W PHP dane z formularza odbierasz przez tablice superglobalne $_GET i $_POST — to zwykłe tablice asocjacyjne, gdzie kluczem jest atrybut name pola formularza.

Ważne: zawsze sprawdzaj funkcją isset(), czy dana w ogóle została przesłana, zanim spróbujesz jej użyć — inaczej PHP zgłosi ostrzeżenie, gdy ktoś wejdzie na stronę bez wypełnienia formularza.

Schemat

Formularz HTML (przeglądarka)         PHP (serwer)
  <input name="email">
  <input name="haslo">        --->    $_POST["email"]
  <button>Zaloguj</button>             $_POST["haslo"]

Przykład z życia

Formularz logowania na stronie serwisu filmowego wysyła Twój e-mail i hasło metodą POST do skryptu PHP, który sprawdzi je w bazie danych (nauczysz się tego w Lekcji 15).

Kod (PHP)

<!-- formularz.html lub ten sam plik .php -->
<form action="przetworz.php" method="POST">
    <label>Twój e-mail:</label>
    <input type="text" name="email"><br>

    <label>Wiadomość:</label>
    <textarea name="wiadomosc"></textarea><br>

    <button type="submit">Wyślij</button>
</form>

// przetworz.php — plik wskazany w action formularza
if (isset($_POST["email"]) && isset($_POST["wiadomosc"])) {
    $email = $_POST["email"];
    $wiadomosc = $_POST["wiadomosc"];
    echo "Dziękujemy, " . $email . "! Otrzymaliśmy wiadomość: " . $wiadomosc;
} else {
    echo "Najpierw wypełnij formularz.";
}

Komentarz i wyjaśnienie kodu

Atrybut action="przetworz.php" w formularzu mówi przeglądarce, DOKĄD wysłać dane po kliknięciu przycisku, a method="POST" — JAK je wysłać. Atrybut name="email" na polu tekstowym staje się kluczem w tablicy $_POST po stronie PHP: $_POST["email"]. Warunek isset() na początku pliku przetworz.php sprawdza, czy dane w ogóle dotarły — to zapobiega błędom, gdyby ktoś otworzył ten plik bezpośrednio, bez wypełnienia formularza.

Ćwiczenie samodzielne

Dodaj do formularza trzecie pole (np. "Twój wybrany film") i odbierz jego wartość w pliku przetworz.php.

Zadania do pracy własnej

  1. Stwórz formularz z jednym polem "Twoje imię" i skrypt PHP, który po wysłaniu formularza wypisze "Witaj, [imię]!".

  2. Stwórz formularz wyszukiwania filmów (metoda GET) z jednym polem tekstowym i skrypt PHP, który wypisze "Szukasz filmu: [wpisana fraza]" — zwróć uwagę na pasek adresu przeglądarki po wysłaniu.

  3. Stwórz formularz "Dodaj opinię o filmie" z polami: tytuł filmu, ocena (1-5), treść opinii — i skrypt PHP, który sprawdza (isset) każde pole osobno, a jeśli którekolwiek jest puste, wypisuje komunikat, którego konkretnie pola brakuje.

Typowe błędy

Częsty błąd to niezgodność wartości atrybutu name w formularzu z kluczem użytym w $_POST/$_GET w PHP (literówka sprawia, że dana "nie dociera"). Drugi błąd: użycie $_GET, gdy formularz ma method="POST" (albo odwrotnie) — dane po prostu nie zostaną znalezione. Trzeci: brak sprawdzenia isset() przed użyciem $_POST[...], co powoduje ostrzeżenie przy pierwszym (pustym) wejściu na stronę.

Nawiązanie do egzaminu zawodowego

To bezpośrednia realizacja efektów INF.03.5.3.4 ("definiuje skrypty obsługujące formularze i kontrolki HTML") oraz INF.03.5.4.3-4 ("stosuje metody przesyłania danych z formularza", "programuje wysyłanie danych z formularza HTML") — jeden z najczęściej sprawdzanych elementów w części praktycznej egzaminu INF.03.