Egy HTML űrlap (form) elküldésével az űrlapból származó összes adat automatikusan elérhetővé válik a szkript számára a PHP segítségével. Többféle mód létezik ezen információk elérésére:
Az egyéni beállításaidtól függően több mód is létezik HTML formok által beküldött adatok elérésére. Íme néhány példa:
Egy GET form használata hasonló, kivéve hogy a megfelelő GET előredefiniált változókat kell használnod. A GET a QUERY_STRING-re vonatkozik (az információ, ami az URL-ben a '?' után szerepel). Például a http://www.pelda.hu/teszt.php?azon=3 tartalmaz egy GET adatot, amely $_GET['azon'] módon érhető el. Lásd még: $_REQUEST, import_request_variables()
Megjegyzés: A szuperglobális tömbök, mint például a $_POST vagy a $_GET, a PHP 4.1.0-től állnak rendelkezésre.
Mint láttuk, a PHP 4.2.0 előtt a register_globals alapértelmezett értéke on volt, PHP 3-ban pedig mindig be volt állítva. A PHP közösség azt javasolja mindenkinek, hogy ne alapozzon erre a direktívára, mert az off-ra állítását sokkal inkább részesítík előnyben; ennek megfelelően érdemes programozni.
Megjegyzés: A magic_quotes_gpc konfigurációs beállítás hatással van a GET, POST és COOKIE metódusokkal kapott értékekre. Bekapcsolva a (Ez a "PHP", biz'a!) szövegből automágikusan (Ez a \"PHP\", biz\'a!) lesz, hogy megkönnyítse az adatbázisba írást. Lásd még: addslashes(), stripslashes() és magic_quotes_sybase!
A PHP megérti és kezeli a tömbökbe rendezett űrlapváltozókat. (Lásd kapcsolódó Gy.I.K.!) Hasznos lehet csoportosítani az összetartozó változókat, vagy az olyan űrlapelemeket, ahol több lehetőség közül nem csak egy választható. Példaképpen küldjünk el egy űrlapot saját magának, és elküldéskor jelenítsük meg az adatot.
Példa 12-10. Összetettebb űrlapváltozók
|
PHP 3-ban ilyen módon csak egydimenziós tömbök hozhatók létre, míg PHP 4-től nincs ilyen korlátozás.
Az űrlap elküldésekor megoldható, hogy gomb helyett képet használunk ilyesféle jelölés segítségével:
Ha a felhasználó a képre kattint, a kiszolgálóra a következő két változó jut el: elkuld_x-et és elkuld_y-t. Ezek tartalmazzák a kattintás képen belüli koordinátáit. A tapasztaltabbak biztos megjegyeznék, hogy a változónevek nem aláhúzást, hanem pontot tartalmaznak, de a PHP a pontot automatikusan aláhúzássá konvertálja.
A PHP támogatja a Netscape specifikációja által definiált HTTP sütiket. A süti olyan mechanizmus, amely a távoli böngészőn tesz lehetővé adattárolást, és így lehetővé teszi a visszatérő felhasználók azonosítását. A sütiket a setcookie() függvénnyel lehet beállítani. A sütik a HTTP fejléc részei, így a SetCookie függvényt bármilyen kimenet generálása előtt kell meghívni. Ugyanezt a megkötést kell betartani a header() függvénnyel. A süti adatok a megfelelő tömbökben találhatóak, mint például a $_COOKIE, $HTTP_COOKIE_VARS valamint a $_REQUEST. További részleteket és példákat a kézikönyv setcookie() oldalán találsz.
Ha több adatot akarsz rendelni egy sütiváltozóhoz, egyszerűen tekintsd egy tömbnek. Például:
<?php |
Ez két különböző süti, viszont a szkriptedben a Sutikem egyetlen tömb lesz. Ha egy sütiben szeretnél tárolni összetett adatokat, használhatod a serialize() vagy az explode() függvényeket.
Vigyázz, mert a süti felülírja az előző azonos nevű sütit, hacsak nem különbözik a path vagy a domain. Így pl. egy bevásárlókocsi megírásakor jó egy számlálót is elhelyezni, hogy elkerüljük a problémát.
Példa 12-11. Példa a setcookie() használatára
|
Általában a PHP nem változtatja meg a változók neveit, amikor a szkript megkapja őket. A pont viszont nem érvényes karakter egy PHP változóneven belül. Az ok megértéséért nézd ezt:
<?php |
Emiatt fontos, hogy PHP automatikusan helyettesíti a pontokat aláhúzásjellel.
Mivel a PHP határozza meg a változók típusát és konvertálja őket (általában) szükség szerint, nem mindig nyilvánvaló, hogy milyen típusú egy pillanatban egy adott változó. A PHP-nek számos függvénye van, amelyek egy változó típusát hivatottak eldönteni, mint például: gettype(), is_array(), is_float(), is_int(), is_object(), és is_string(). Lásd még a típusokról szóló fejezetet.