A POST és a GET módszer

Mai leckénkben a GET és a POST módszerekkel fogunk foglalkozni, melyek A PHP-formok című leckéből lehetnek ismerősek. Mai cikkünkből megtanulhatod, hogyan küldhetőek át az információk a szerverre a POST és a GET módszerek segítségével.
 

Az információ szerverre való küldésének módjai

A böngészők tipikusan a két HTTP (Hypertext Transfer Protocol) módszer egyikének segítségével kommunikálnak a szerverrel — ez a két módszer a POST és a GET. Mindkét módszerrel más módon továbbítjuk az információt, és mindkettőnek megvannak az előnyei és a hátrányai.

A PHP-formok című leckében egy HTML-formot használtunk, melyet egy PHP-weboldalra küldtünk feldolgozásra. Akkor a POST módszert alkalmaztuk, de választhattuk volna a GET módszert is. Mai leckénkben mindkét küldési módszerrel foglalkozni fogunk.
 

A POST módszer

A formokkal foglalkozó cikkünkben a POST módszert alkalmaztuk. A HTML-kód erre vonatkozó sora így festett:
 

PHP-kód-kivonat:

<form action="process.php" method="post">
< name="item">
...
<input name="quantity" type="text" />

Ez a HTML-kód határozza meg, hogy a form adatai a „process.php” weboldalon lesznek közzétéve, a POST módszer alkalmazásával. A PHP ezt úgy valósítja meg, hogy az összes „posztolt” értéket a „$_POST” asszociatív tömbben tárolja. Bizonyosodj meg róla, hogy jól választottad meg a form adatainak nevét, hiszen ezek lesznek a kulcsok a „$_POST” asszociatív tömbben.

Most, hogy már az asszociatív tömbök fogalmával is megismerkedtünk, a „process.php” PHP-kódja bizonyára sokkal érthetőbb, mint néhány hete volt.
 

PHP-kód-kivonat:

$quantity = $_POST['quantity'];
$item = $_POST['item'];

 

A formokban található nevek az asszociatív tömb kulcsai, ezért fontos, hogy a HTML-formban ne legyen két olyan bemeneti elem, amely neve megegyezik. Ha ez mégis megtörténne, könnyen problémákba ütközhetsz a POST módszer alkalmazása során.
 

A GET módszer

Ahogy korábban is említettük, a másik formküldési módszer a GET. Ha a HTML-formot úgy változtatnánk meg, hogy a GET módszert alkalmazza, a kódrészlet ilyen lenne:
 

PHP-kód-kivonat:

<form action="process.php" method="get">
< name="item">
...
<input name="quantity" type="text" />

 

A GET módszer különlegessége, hogy a változókat a „process.php” weboldalra úgy juttatja el, hogy az URL végére illeszti őket. Az URL végére a küldés után a következő kerülne:
"?item=##&quantity=##"


A kérdőjel („?”) mutatja a böngészőnek, hogy a jelet követő elemek változók. Most, hogy megváltoztattuk az információküldés módszerét az „order.html”-ben, a „process.php”-ben is módosítanunk kell a kódot, hogy a „$_GET” asszociatív tömböt alkalmazza.

Lássunk egy gyakorlati példát az URL kinézetére:

http://www.example.com/action.php?name=john&age=24

A félkövér részek a GET-paraméterek, a dőlt betűs részek pedig a paraméterek értékei. A & jel segítségével több paraméterérték-párt is az URL-be foglalhatunk.
 

PHP-kód-kivonat:

$quantity = $_GET['quantity'];
$item = $_GET['item'];

 

Miután megváltoztattuk a tömb nevét, a script helyesen fog működni. A GET módszer mutatja a változó információit a látogatónak, ezért arra nagyon kell ügyelni, hogy jelszavakat vagy személyes információkat ne a GET módszerrel küldjünk, hiszen nem szeretnénk, hogy a látogatóink olyasmit lássanak, amit nem kellene.
 

Mikor melyik módszert alkalmazzuk?

A GET módszerrel küldött információk mindenki számára láthatóak, hiszen az URL tartalmazza őket. A GET továbbá korlátozza a küldhető információ mennyiségét is. A módszerrel nagyjából 2000 karakternyi információt küldhetünk. A GET előnye, hogy mivel a változók az URL-ben találhatóak, a böngésző könyvjelzői közé menthetjük őket. Ez számos esetben lehet hasznos.

A POST módszerrel küldött információk előnye, hogy mások számára láthatatlanok (hiszen minden név/érték a HTTP-kérés testébe van ágyazva, és az információmennyiség sincs korlátozva). A POST emellett olyan funkciókat is támogat, mint például a több részből álló bináris bemenetek a fájlok szerverre való feltöltésekor. A hátránya, hogy mivel a változók nem jelennek meg az URL-ben, nem tudjuk a könyvjelzők közé rakni az oldalt.
 

Biztonsági óvintézkedések

Ha a felhasználó által bevitt adatokkal dolgozunk, mindig meg kell bizonyosodnunk arról, hogy a bevitt adatok biztonságban vannak. Ha az adatokat MySQL-adatbázisban fogjuk elhelyezni, lépéseket kell tennünk a MySQL Injection megakadályozása érdekében. Ha a felhasználók által bevitt adatok nyilvánosan elérhetőek lesznek, érdemes elgondolkodni a PHP htmlentities alkalmazásán.

 

Összegzés:

Mai cikkünkben bemutattuk a POST és a GET módszereket. Mindkettőnek megvannak az előnyei és a hátrányai, az pedig, hogy melyiket fogjuk használni, mindig az aktuális projektum igényeitől függ. Leckénkben nem foglalkoztunk részletesebben a biztonsággal, erről azonban nem szabad megfeledkezned, ha „élesben” alkalmazod majd a POST és a GET módszereket.

Az oldal sütiket használ, hogy személyre szabjuk a tartalmakat és reklámokat, hogy működjenek a közösségi média funkciók, valamint hogy elemezzük a weboldal forgalmát. Bővebben a "Részletek mutatása" gombra olvashat.
Az oldal sütiket használ, hogy személyre szabja az oldalon megjelenő tartalmat és reklámokat.