Ű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.
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 POST 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.