Űrlapok Feldolgozása: GET és POST

A GET és POST metódusok közötti különbség vizuális magyarázata

A HTML kurzusban megtanultuk, hogyan építsünk fel egy <form> (űrlap) taget beviteli mezőkkel. De a HTML önmagában buta: nem tudja elmenteni az adatokat, és nem tud emailt küldeni. Amikor a felhasználó rákattint a "Küldés" gombra, az adatokat át kell adnunk a PHP szervernek. Ezt a folyamatot hívjuk űrlap feldolgozásnak.

A Két Futár: GET és POST

Amikor a HTML űrlap elküldi az adatokat a PHP-nak, kétféle "futárszolgálat" közül választhat. Ezt a <form method="..."> attribútumban adjuk meg.

1. A GET Metódus (A Nyílt Levelezőlap)

Ha a GET metódust használod, a böngésző az összes beírt adatot hozzáfűzi az URL cím végéhez. Biztosan láttál már ilyet, amikor kerestél valamit a Google-ben vagy egy webshopban (pl. kereses.php?termek=cipo&szin=piros).

  • Mikor használd? Keresőmezőknél, szűrőknél, lapozásnál. Mivel az adat benne van az URL-ben, a felhasználó el tudja menteni a linket a könyvjelzők közé, vagy el tudja küldeni egy barátjának.
  • Mikor TILOS használni? Jelszavaknál, bankkártya adatoknál, vagy hosszú szövegeknél. Soha ne küldj érzékeny adatot GET-tel, mert mindenki látja a böngésző címsorában!

2. A POST Metódus (A Páncélszekrény)

A POST metódus a háttérben, a HTTP kérés "testében" (body) küldi el az adatokat. Az URL tiszta marad, a felhasználó nem látja, hogy mi utazik a szerver felé.

  • Mikor használd? Bejelentkezésnél, regisztrációnál, kapcsolatfelvételi űrlapoknál, vagy ha adatbázisba mentesz valamit.

Hogyan fogadja a PHP az adatokat?

A PHP-ban léteznek úgynevezett Szuperglobális Változók. Ezek olyan beépített asszociatív tömbök, amik bárhol, bármikor elérhetők a kódban. A két legfontosabb a $_GET és a $_POST.

Nézzünk egy egyszerű kapcsolatfelvételi űrlapot (HTML):

<form action="feldolgozo.php" method="POST">
    <label>Neved:</label>
    <input type="text" name="felhasznalo_neve">
    
    <button type="submit">Küldés</button>
</form>

És így néz ki a feldolgozo.php fájl, ami fogadja az adatot:

<?php
    // Ellenőrizzük, hogy tényleg POST metódussal érkezett-e az adat
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
        
        // A $_POST tömbből a HTML 'name' attribútuma alapján olvassuk ki az értéket
        $kapott_nev = $_POST["felhasznalo_neve"];
        
        echo "Köszönjük az üzenetet, " . $kapott_nev . "!";
    }
?>

Kiberbiztonság 101: Soha ne bízz a felhasználóban!

A fenti PHP kód működik, de éles weboldalon soha nem szabad így használni! Mi van akkor, ha a felhasználó a neve helyett egy kártékony JavaScript kódot (pl. <script>alert('Feltörtem az oldalad!');</script>) ír be a mezőbe?

Ha ezt a kódot a PHP szűrés nélkül kiírja a képernyőre, a böngésző le fogja futtatni a vírust. Ezt a támadást hívják XSS (Cross-Site Scripting)-nek.

A védekezés: Mielőtt bármilyen, felhasználótól származó adatot kiírnál a képernyőre, át kell mosnod a htmlspecialchars() függvénnyel. Ez ártalmatlan szöveggé alakítja a veszélyes HTML/JS kódokat.

<?php
    // A BIZTONSÁGOS MÓDSZER
    $kapott_nev = htmlspecialchars($_POST["felhasznalo_neve"]);
    echo "Köszönjük az üzenetet, " . $kapott_nev . "!";
?>
← Előző lecke