Formularze HTML na egzaminie INF.03

INF.03 · teoria
autor: redakcja · 24.08.2026 · aktualizacja: 08.09.2026
Formularze HTML w kwalifikacji INF.03: najważniejsze zasady, przykłady i 66 powiązanych pytań w banku.
For­mu­larz to pod­sta­wo­wy sposób, w jaki prze­glą­dar­ka sama, bez do­dat­ko­we­go skryp­tu, prze­ka­zu­je dane użyt­kow­ni­ka na serwer. To, co dotrze do skryp­tu PHP, wynika z trzech de­cy­zji za­pi­sa­nych w HTML: dokąd wysłać (action), jaką metodą (method) i pod jaką nazwą (name). Kto czyta for­mu­larz w tej ko­lej­no­ści, po­tra­fi wy­pi­sać za­war­tość ta­bli­cy $_POST z samego kodu strony. Typy pól i wa­li­da­cja HTML5 są nad­bu­do­wą nad tym me­cha­ni­zmem, a nie jego za­mien­ni­kiem.

Znacz­nik form, action i method

1
2
3
4
<form action="zapisz.php" method="post">
<input type="text" name="email">
<button>Wyślij</button>
</form>
Po­mi­nię­ty lub pusty action kie­ru­je dane pod adres bie­żą­cej strony. Wy­sył­kę uru­cha­mia­ją dwa zapisy, bo do­myśl­nym typem przy­ci­sku w for­mu­la­rzu jest submit:
1
2
<input type="submit" value="Wyślij">
<button>Wyślij</button>
W for­mu­la­rzu z jednym polem tek­sto­wym wy­star­czy Enter. Bez atry­bu­tu method prze­glą­dar­ka użyje GET, więc hasło z for­mu­la­rza lo­go­wa­nia tra­fi­ło­by do wi­docz­ne­go adresu.
Na serwer idą tylko pola z atry­bu­tem name, które nie są wy­łą­czo­ne przez disabled. Pole z readonly jest wy­sy­ła­ne nor­mal­nie. Atry­but name samego znacz­ni­ka form nie jest wy­sy­ła­ny.

GET kontra POST w prak­ty­ce

Cecha
GET
POST
gdzie dane
w ad­re­sie, po ?, pary łą­czo­ne &
w ciele żą­da­nia
wi­docz­ność
pasek adresu, hi­sto­ria, logi
nie­wi­docz­ne w ad­re­sie
limit dłu­go­ści
dłu­gość adresu
usta­wie­nie ser­we­ra (post_max_size)
za­sto­so­wa­nie
wy­szu­ki­wa­nie, filtry, stro­ni­co­wa­nie
lo­go­wa­nie, zapis, usu­wa­nie, pliki
Metoda GET wkłada pary do adresu, więc wynik widać w pasku prze­glą­dar­ki:
1
2
3
4
5
<form action="szukaj.php" method="get">
<input name="q">
<input name="sort">
-> szukaj.php?q=router&sort=cena (PHP odczyta to z $_GET)
Od­świe­że­nie strony po wy­sył­ce POST wy­wo­łu­je py­ta­nie o po­now­ne prze­sła­nie danych, dla­te­go po za­pi­sie sto­su­je się prze­kie­ro­wa­nie.

Atry­but name jako klucz prze­sy­ła­nych danych

Nazwa pola jest klu­czem w ta­bli­cy na ser­we­rze:
1
2
<input type="text" name="email"> <!-- HTML -->
$_POST['email'] // PHP, przy method="post"
Atry­but id służy stylom, skryp­tom i ety­kie­cie, na serwer nie trafia, a pole bez name jest po­mi­ja­ne.
Pola wie­lo­krot­ne­go wyboru mają własne zasady:
1
2
3
4
5
6
7
8
9
10
11
<input type="radio" name="plec" value="k">
<input type="radio" name="plec" value="m">
<!-- wspolny name = wybor jest JEDEN, rozny value = wiadomo ktory -->
<input type="checkbox" name="zgoda">
<!-- niezaznaczony NIE WYSYLA NICZEGO: w PHP sprawdzaj isset(), -->
<!-- a nie porownanie do pustego tekstu; bez value przekaze "on" -->
<input type="checkbox" name="opcje[]" value="a">
<input type="checkbox" name="opcje[]" value="b">
<!-- nawiasy kwadratowe: PHP odbierze to jako tablice -->

Typy pola input i to, co na­praw­dę dają

Atry­but type zmie­nia kla­wia­tu­rę na te­le­fo­nie, wygląd pola i wbu­do­wa­ne spraw­dze­nie, ale nie chroni danych.
Typ
Co daje
Pu­łap­ka
password
za­sła­nia znaki krop­ka­mi
prze­sy­ła je jak zwykły tekst; po­uf­ność daje HTTPS
number
współ­pra­cu­je z min, max, step
star­sza prze­glą­dar­ka po­trak­tu­je jak text
email
spraw­dza obec­ność @ i tekstu wokół
war­tość a@b przej­dzie kon­tro­lę
checkbox
nie­za­leż­ne zgody
nie­za­zna­czo­ny nie wysyła ni­cze­go
radio
jeden wybór z ze­sta­wu
grupę tworzy wspól­ny name
file
wska­za­nie pliku z dysku
wymaga enctype="multipart/form-data"
hidden
war­tość nie­wi­docz­na na stro­nie
każdy ją po­dej­rzy i zmieni: nie za­pi­suj ceny ani upraw­nień

Ety­kie­ta, lista roz­wi­ja­na i pole wie­lo­li­nio­we

Ety­kie­ta wiąże się z polem przez id, a NIE przez name:
1
2
3
4
5
<label for="mail">Adres e-mail</label>
<input id="mail" name="email" type="email">
<label>Adres e-mail <input name="email"></label>
<!-- pole w srodku etykiety nie potrzebuje juz "for" -->
Klik­nię­cie ety­kie­ty usta­wia kursor w polu, a czyt­nik ekranu od­czy­tu­je opis.
Lista roz­wi­ja­na trzyma name na znacz­ni­ku select, a wysyła value za­zna­czo­nej opcji:
1
2
3
4
5
6
7
8
9
10
11
12
<select name="miasto">
<option value="gd">Gdańsk</option>
<option value="so" selected>Sopot</option>
</select>
<!-- bez atrybutu value pojdzie tekst spomiedzy znacznikow -->
<select name="opcje[]" multiple>
<!-- bez nawiasow dotrze TYLKO ostatnia zaznaczona pozycja -->
<textarea name="opis">tresc poczatkowa</textarea>
<!-- textarea nie ma atrybutu value: tresc stoi miedzy znacznikami, -->
<!-- razem ze spacjami i zlamaniami wiersza -->

Wa­li­da­cja HTML5 i wy­sy­ła­nie pliku

1
2
3
<input name="kod" pattern="[0-9]{2}-[0-9]{3}" required maxlength="6">
<!-- przepusci 30-001, odrzuci 300-1: wzorzec obejmuje CALA wartosc -->
<!-- puste pole wzorzec pomija, dopoki nie ma "required" -->
required blo­ku­je wy­sła­nie pu­ste­go pola, maxlength ogra­ni­cza liczbę znaków z kla­wia­tu­ry, a zakres liczby lub daty ogra­ni­cza­ją min i max.
Ta kon­tro­la działa wy­łącz­nie w prze­glą­dar­ce: novalidate na for­mu­la­rzu, formnovalidate przy przy­ci­sku, edycja w na­rzę­dziach de­we­lo­per­skich albo żą­da­nie spoza strony wy­sy­ła­ją dane bez spraw­dze­nia, więc serwer musi po­wtó­rzyć te same reguły (jak, po­ka­zu­je ar­ty­kuł o PHP).
Prze­sła­nie pliku wymaga dwóch atry­bu­tów naraz:
1
2
3
4
5
<form action="wyslij.php" method="post" enctype="multipart/form-data">
<input type="file" name="zdjecie">
</form>
<!-- przy domyslnym kodowaniu serwer dostanie SAMA NAZWE pliku -->
<!-- poprawnie wyslany plik czyta sie z $_FILES -->
Wa­li­da­cję po stro­nie prze­glą­dar­ki w JavaScript opi­su­je ar­ty­kuł o JavaScripcie, a pełne za­da­nia znaj­dziesz w ar­ku­szach INF.03.
ZAWODNIK
egzamin zawodowy INF.02 · INF.03 · INF.04
Serwer Discord›
Egzaminy zawodowe IT/Matury/Studia
@yastor
© 2026 Zawodnik · by Yastor
Arkusze i zasady oceniania pochodzą z CKE. Serwis nie jest powiązany z Centralną Komisją Egzaminacyjną.