Változók a PHP-n kívülről

HTML űrlapok (GET és POST)

Egy HTML űrlap (form) elküldésével az űrlap összes beviteli mezőjének értéke automatikusan elérhetővé válik a szkript számára a PHP segítségével. Ha a track_vars szolgáltatás be van kapcsolva, ezek a változók a $HTTP_POST_VARS, $HTTP_GET_VARS, és/vagy $HTTP_POST_FILES, asszociatív tömbökben foglalnak helyet a változók forrásának megfelelően.

További információkért ezekről a változókról olvasd el az Előre definiált változók című részt.

Példa 8-1. Egyszerű űrlap változó példája

<form action="foo.php" method="post">
    Name: <input type="text" name="usernev"><br>
    <input type="submit">
</form>

Ha elküldjük a fenti űrlapot, akkor a PHP létrehozza a $HTTP_POST_VARS['usernev'] változót. Ha a register_globals beállítás aktív, akkor ez a változó elérhető lesz $usernev globális változóként is.

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 related faq!) 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élda 8-2. Összetettebb űrlapváltozók

<form action="array.php" method="post">
    Név: <input type="text" name="szemelyes[nev]"><br>
    Email: <input type="text" name="szemelyes[email]"><br>
    Sör: <br>
    <select multiple name="ital[]">
        <option value="warthog">Warthog
        <option value="guinness">Guinness
        <option value="stuttgarter">Stuttgarter Schwabenbräu
        </select>
    <input type="submit">
</form>

PHP 3-ban ilyen módon csak egydimenziós tömbök hozhatók létre, míg PHP 4-ben nincs ilyen korlátozás.

IMAGE SUBMIT változónevek

Az űrlap elküldésekor megoldható, hogy gomb helyett képet használunk ilyesféle jelölés segítségével:

<input type="image" src="image.gif" name="elkuld">

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.

HTTP sütik (cookie)

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. Bármilyen süti, amelyet a klienstől érkezik, automatikusan egy PHP változóba kerül, úgy, mint a GET és a POST metódus adatai.

Ha több adatot akarsz rendelni egy sütihez, egyszerűen rakj []-t a cookie neve után. Például:

setcookie("EnSutim[]", "tesztelem", time()+3600);

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 8-3. SetCookie Példa

$Szamlalo++;
setcookie("Szamlalo", $Szamlalo, time()+3600);
setcookie("Kocsi[$Szamlalo]", $elem, time()+3600);

Környezeti változók

A PHP automatikusan létrehozza az elérhető környezeti változókat, mint egyszerű PHP változókat.

echo $HOME;  /* Megmutatja a HOME környezeti változót, ha van. */

Mivel az információ ami a GET, POST és Cookie mechanizmuson keresztül jön, mind automatikusan PHP változókat generál, ezért néha jobb, ha direkt a környezeti változókból olvassuk ki, hogy tudjuk, valójában melyik változatból olvasunk. A getenv() függvényt lehet erre használni. A környezeti változókat be is lehet állítani a putenv() függvénnyel.

Pontok a bejövő változónevekben

Á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 a:
$varname.ext;  /* érvénytelen változónév */
Most az elemző lát egy $varname nevű változót, amelyet stringösszefűző operátor (.) követ, majd egy csupasz sztring: az ext - idézőjel nélküli string, amely nem egyezik semmilyen ismert vagy lefoglalt kulcsszóval. Ez nyilván nem a kívánt eredményt adná.

Emiatt fontos, hogy PHP automatikusan helyettesíti a pontokat aláhúzásjellel.

Változótípusok meghatározása

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. Ezek: gettype(), is_long(), is_double(), is_string(), is_array(), és is_object().