PHP Academy · Lekcja

GET a POST: kiedy używać każdej metody

Poznaj różnicę między żądaniami HTTP GET i POST w PHP

Lekcja 1 z 413 kroki

GET a POST: kiedy używać każdej metody to bezpłatna lekcja PHP Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej PHP Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs PHP Academy zawiera 4 lekcji w sumie.

Metody HTTP w PHP

Gdy przeglądarka przesyła formularz HTML, używa metody HTTP GET albo POST. PHP udostępnia przesłane dane za pomocą zmiennych superglobalnych:

  • $_GET — dane dołączone do adresu URL
  • $_POST — dane w treści żądania

Metoda GET

GET dołącza dane formularza do adresu URL jako parametry ciągu zapytania:

<!-- HTML form -->
<form method="GET" action="search.php">
    <input name="query" type="text">
    <button type="submit">Search</button>
</form>

<!-- URL becomes: search.php?query=php+tutorial -->

<?php
$q = $_GET['query'] ?? '';
echo 'You searched for: ' . htmlspecialchars($q);

Metoda POST

POST wysyła dane w treści żądania HTTP — nie są one widoczne w adresie URL:

<!-- HTML form -->
<form method="POST" action="login.php">
    <input name="email" type="email">
    <input name="password" type="password">
    <button type="submit">Log In</button>
</form>

<?php
$email    = $_POST['email']    ?? '';
$password = $_POST['password'] ?? '';

Kiedy używać GET

Metody GET należy używać, gdy:

  • Żądanie jest idempotentne (nie powoduje efektów ubocznych)
  • Dane mogą pojawić się w adresie URL — dotyczy to wyszukiwania, filtrów i stronicowania
  • Potrzebne są adresy URL, które można dodać do zakładek lub udostępnić
  • Dane nie są poufne

Kiedy używać POST

Metody POST należy używać, gdy:

  • Żądanie zmienia stan serwera (tworzy, aktualizuje lub usuwa dane)
  • Dane są poufne (hasła, dane osobowe)
  • Wysyłana jest duża ilość danych (pliki, długi tekst)
  • Dane nie powinny być buforowane przez przeglądarki ani serwery proxy

Limity długości GET

Żądania GET mają ograniczenia długości adresu URL (w praktyce zazwyczaj około 2000 znaków). POST nie ma praktycznego limitu poza konfiguracją serwera:

<?php
// php.ini settings for POST limits:
// post_max_size = 8M   (total POST body size)
// upload_max_filesize = 2M

// Check current limits at runtime:
echo ini_get('post_max_size');        // 8M
echo ini_get('upload_max_filesize');  // 2M

Zmienna superglobalna $_REQUEST

$_REQUEST łączy $_GET, $_POST i $_COOKIE. Jest wygodna, ale mniej jasno wskazuje źródło danych:

<?php
// Works for both GET and POST but is ambiguous
$name = $_REQUEST['name'] ?? '';

// Better: be explicit about the expected method
$name = match($_SERVER['REQUEST_METHOD']) {
    'GET'  => $_GET['name']  ?? '',
    'POST' => $_POST['name'] ?? '',
    default => '',
};

Sprawdzanie metody żądania

Przed przetworzeniem danych formularza zawsze sprawdzaj metodę żądania:

<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $name = trim($_POST['name'] ?? '');
    if (!empty($name)) {
        echo 'Hello, ' . htmlspecialchars($name);
    }
} else {
    // Show empty form
}

HTTPS i bezpieczeństwo danych

Nawet w przypadku POST dane są widoczne jako zwykły tekst, jeśli nie jest używany protokół HTTPS. Najważniejsze zasady bezpieczeństwa:

  • W środowisku produkcyjnym zawsze używaj HTTPS
  • Nigdy nie przesyłaj haseł za pomocą GET
  • POST przez HTTP nadal jest niezabezpieczony — HTTPS szyfruje również treść żądania

Przekierowanie po POST (wzorzec PRG)

Po pomyślnym żądaniu POST przekieruj użytkownika do żądania GET, aby zapobiec ponownemu przesłaniu formularza po odświeżeniu strony:

<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // Process the form...
    $id = saveToDatabase($_POST);
    
    // Post-Redirect-Get (PRG) pattern
    header('Location: /success.php?id=' . $id);
    exit;
}

Formularze wieloczęściowe do przesyłania plików

Aby przesyłać pliki, formularz musi używać enctype="multipart/form-data" wraz z metodą POST:

<!-- Required for file uploads -->
<form method="POST" action="upload.php"
      enctype="multipart/form-data">
    <input type="file" name="avatar">
    <button type="submit">Upload</button>
</form>

<?php
$file = $_FILES['avatar'];
echo $file['name'];  // original filename

Szybkie sprawdzenie

Jakiej metody HTTP należy użyć podczas przesyłania formularza logowania zawierającego nazwę użytkownika i hasło?

Podsumowanie: GET a POST

Najważniejsze różnice:

  • GET — w adresie URL, można dodać do zakładek, bez efektów ubocznych, ograniczony rozmiar
  • POST — w treści żądania, odpowiedni dla poufnych danych, bez limitu długości adresu URL
  • Zawsze używaj HTTPS, aby chronić dane GET i POST
  • Przed przetworzeniem żądania sprawdzaj $_SERVER['REQUEST_METHOD']
  • Stosuj wzorzec PRG, aby zapobiegać wielokrotnemu przesyłaniu żądań POST
Bezpłatny start

Ucz się PHP dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
49
Lekcje
195

Często zadawane pytania

Czy lekcja „GET a POST: kiedy używać każdej metody” jest bezpłatna?

Tak — pełny tekst „GET a POST: kiedy używać każdej metody” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu PHP Academy, przejdź na CoddyKit PRO. Kurs PHP Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „GET a POST: kiedy używać każdej metody”?

Poznaj różnicę między żądaniami HTTP GET i POST w PHP Ćwiczysz PHP Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć PHP Academy?

Nie wymagamy żadnego doświadczenia. PHP Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „GET a POST: kiedy używać każdej metody”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji PHP Academy?

Tak. Każda lekcja PHP Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. GET a POST: kiedy używać każdej metody
  2. Odczytywanie danych formularza za pomocą superglobalnych
  3. Techniki walidacji danych wejściowych
  4. Oczyszczanie danych wejściowych użytkownika
← Powrót do PHP Academy