Űrlapkezelés a PHP-ban POST és GET metódus segítségével

Az információ szerverre való küldésének két módja van, ez a két mód pedig nem mást mint a POST és a GET. Ebben a PHP leckében ezt a két metódust, módszert fogjuk bemutatni, illetve megpróbálunk pár támpontot adni, hogy eltudjátok dönteni, hogy mikor melyiket érdemes használni.

A PHP leckékhez készített kép, mely bemutatja, hogy weboldalunkon ingyenesen tanulható a PHP nyelv

Űrlapkezelés a PHP-ban POST és GET metódus segítségével

Az információ szerverre való küldésének két módja van, ez a két mód pedig nem mást mint a POST és a GET. Ebben a PHP leckében ezt a két metódust, módszert fogjuk bemutatni, illetve megpróbálunk pár támpontot adni, hogy eltudjátok dönteni, hogy mikor melyiket érdemes használni.

>> Ebben a leckében erősen támaszkodunk a HTML űrlap elemeire, így ha valakinek van hiányosságai ebben a témában, az kattintson erre a linkre. <<

POST és GET metódus

Ahogy a bevezetőben írtunk a böngésző két módszer segítségével képes kommunikálni a szerverrel, ezek közül az egyik a POST, míg a másik a GET. Ez a két módszer működésben eltér egymástól, így mind a kettőnek megvan a saját előnye, illetve hátránya.


Mikor melyiket érdemes használni?

  • egy weboldalon történő keresést célszerű GET-tel megvalósítani, hiszen ilyenkor az URL címben látszanak a keresőszavak, így a link továbbítható másnak is, vagy elmenthető
  • bármilyen érzékeny adatot tartalmazó, vagy módosítást végrehajtó műveletet (törlés, létrehozás, módosítás) POST-tal kell végrehajtani, hiszen nem lenne szerencsés, ha az URL-ben látszana a jelszó vagy egy link megnyitásával instant törlődnének dolgok
  • fájlfeltöltésre csak a POST-tal van lehetőségünk

GET metódus a PHP-ban

A GET módszer használatával a GET-en keresztül küldött adatok a link után jelennek meg. A weboldal linkjét és az átküldött adatokat egy kérdőjel (“?”) választja el.


Példa GET-tel megvalósított keresésre:

https://webiskola.hu/?s=PHP
Code language: JavaScript (javascript)

Ha a WEBiskola keresőjébe beírtok bármit, legyen most “PHP”, akkor a GET metódus által a fenti link fog generálódni. Ez a link azért nagyszerű, mert simán kimásolhatjátok, átküldhetitek egy haverotoknak és ő is azt fogja látni, mint ti.


A GET metódus tulajdonságai:

  • érzékeny adatokat soha ne küldjünk GET módszerrel
  • a GET nem alkalmas fájlok, azaz képek és dokumentumok küldésére
  • az összes GET metódussal küldött adat elérhető a $_GET asszociatív tömbből
  • a GET metódus maximum 1024 karakter küldésére korlátozódik
  • a GET metódus egy stringet generál, ami megjelenik a szerver log fájljai között


GET metódust beállító szintaxis:

<form action="FELDOLGOZÓ" method="GET">
Code language: HTML, XML (xml)

Az “action” után megadjuk azt, hogy mi dolgozza fel az űrlapon keresztül leadott adatokat, majd pedig azt, hogy milyen metódussal szeretnénk küldeni az adatokat. Ha az “action”-t elhagyjuk, akkor a jelenlegi dokumentum fogja feldolgozni az adatokat.


Értékek lekérdezése GET metódus esetén (szintaktika):

$_GET['NÉV']
Code language: PHP (php)

A GET metódussal átadott értékeket a $_GET globális asszociatív tömbből tudjuk kiszedni. A “NÉV” helyére az űrlap input mezőjének a “name” attribútumához megadott értéket várja a PHP.


Példa GET metódus használatára PHP-ban:

PHP kód

<body>
  <form method="GET"> // GET metódus beállítása
    Első szám: 
    <input type="text" name="szam1"> // name attribútum -> szam1
    <br>
    Második szám: 
    <input type="text" name="szam2"> // name attribútum -> szam2
    <br><br>
    <input type="submit" value="Összeadás"> // a submit megnyomásával kezdődik el a feldolgozás
  </form>

  <?php
    @$szam1=$_GET['szam1']; // itt szedjük ki a globális asszociatív tömbből az átadott értékeket (name attribútum szerint)
    @$szam2=$_GET['szam2']; // itt szedjük ki a globális asszociatív tömbből az átadott értékeket (name attribútum szerint)
    $osszeg=$szam1+$szam2;
    echo "A két szám összege: " .$osszeg;
  ?>
</body>
Code language: HTML, XML (xml)

Eredmény


A példában látjuk, hogy az űrlap metódusának a GET-et állítottuk be, majd pár sorral létrehozzuk magát az űrlapot. A “submit” típusú gomb megnyomása aktiválja a form elküldését, így ilyenkor kerül képbe a GET metódus. A gomb megnyomásával kerül a $_GET globális asszociatív tömbbe a “szam1” és a “szam2” kulcs, melyeknek értékeit elmentjük a “$szam1” és a “$szam2” változókba. A $_GET tömbbe azért a “szam1” és “szam2” kulcsokra hivatkozunk, mert így neveztük el (name attribútum) az input mezőket az űrlapon.

Illetve a lap tetején elhelyeztünk egy URL megjelenítőt, amelyen keresztül láthatjátok, hogy az aktuális értékek mindig megjelennek az URL-ben az űrlap leadását követően. Továbbá az URL-t manipulálva a végrehajtott művelet eredményét is befolyásolhatjuk, mert ha az URL-ben lecseréljük a két számot, akkor az a kettő kerül összeadásra.

A $szam1 elé helyezett @ jellel elrejthetjük a hibaüzenetet, amelyet azért kapunk, mert az oldal betöltésekor olyan értéket szeretnénk hozzárendelni a változóhoz, ami még nem is létezik, hiszen nem töltöttük ki és nem adtuk le az űrlapot.

POST metódus a PHP-ban

A POST metódus használatakor az elküldött adatok nem jelennek meg az URL-ben.


A POST metódus tulajdonságai:

  • érzékeny adatokat mindig POST metódussal küldjünk, azonban az átküldött adatok a HTTP fejlécen keresztül mennek át, szóval mindig használjunk biztonságos HTTPS kapcsolatot
  • a POST alkalmas fájlok, azaz képek és dokumentumok küldésére
  • az összes POST metódussal küldött adat elérhető a $_POST asszociatív tömbből
  • a POST metódusnak nincsenek méret korlátozásai a küldésre vonatkozóan


POST metódust beállító szintaxis:

<form action="FELDOLGOZÓ" method="POST">
Code language: HTML, XML (xml)

Ha az “action”-t elhagyjuk, akkor a jelenlegi dokumentum fogja feldolgozni az adatokat, azonban, ha kitöltjük, akkor azt határozzuk meg, hogy mi dolgozza fel az űrlapon keresztül leadott adatokat. A “method” pedig azt határozza meg, hogy milyen metódussal szeretnénk küldeni az adatokat.


Értékek lekérdezése POST metódus esetén (szintaktika):

$_POST['NÉV']
Code language: PHP (php)

A POST metódussal átadott értékeket a $_POST globális asszociatív tömbből tudjuk elérni. A “NÉV” helyére az űrlap input mezőjének a “name” attribútumához megadott értéket várja a PHP.


Példa GET metódus használatára PHP-ban:

PHP kód

<body>
  <form method="POST"> // POST metódus beállítása
    Első szám: 
    <input type="text" name="szam1"> // name attribútum -> szam1
    <br>
    Második szám: 
    <input type="text" name="szam2"> // name attribútum -> szam2
    <br><br>
    <input type="submit" value="Összeadás"> // a submit megnyomásával kezdődik el a feldolgozás
  </form>

  <?php
    @$szam1=$_POST['szam1']; // itt szedjük ki a globális asszociatív tömbből az átadott értékeket (name attribútum szerint)
    @$szam2=$_POST['szam2']; // itt szedjük ki a globális asszociatív tömbből az átadott értékeket (name attribútum szerint)
    $osszeg=$szam1+$szam2;
    echo "A két szám összege: " .$osszeg;
  ?>
</body>
Code language: HTML, XML (xml)

Eredmény


Hogy a kettő közötti különbözőség még egyértelműbb legyen, így ugyanazt a feladatot oldottuk meg, mint a GET esetében, csak most POST-tal. Szóval felül láthatjátok az URL-t, ami mindvégig változatlan marad, függetlenül az űrlap submitolásától (leadásától).

Kettő módosítást kellett tennünk a GET-es megoldáshoz képest:

  • a form method-ja POST lett,
  • illetve nem a $_GET globális tömbből szedjük ki az értékeket, hanem a $_POST-ból.


A $szam1 elé helyezett @ jellel elrejthetjük a hibaüzenetet, amelyet azért kapunk, mert az oldal betöltésekor olyan értéket szeretnénk hozzárendelni a változóhoz, ami még nem is létezik, hiszen nem töltöttük ki és nem adtuk le az űrlapot.

Ha hasznos volt számodra, akkor kérlek oszd meg másokkal is, hogy ezzel támogass minket!