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:
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:
$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:
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:
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.
NYEREMÉNYJÁTÉK
Rovatunk elsődleges célja, hogy közelebbről is bemutassa a legismertebb webtechnológiákat. Azok között az olvasók között, akik minden héten követik rovatunkat, azaz velünk tanulják a programozás alapjait és kitöltik a feladatsort, a sorozat végén egy laptopot sorsolunk ki.
A játék heti kérdése
Néhány szó rólunk:
Az ErdSoft (www.erdsoft.com) 2011-ben alakult meg. Csapatunkat a fiatalos lendület, a szakértelem, a folyamatos tanulás és tapasztalatgyűjtés jellemzi. Ügyfeleinknek igyekszünk teljes körű szolgáltatást nyújtani — bátran fordulhatnak hozzánk, legyen szó webfejlesztésről, alkalmazásokról, SEO-optimalizálásról, grafikai tervezésről, marketingről vagy szövegírásról. Csapatunk sikerét mi sem bizonyítja jobban, mint a több száz elkészült weboldal és a számos elégedett ügyfél Szerbiában, Magyarországon és az Egyesült Királyságban.