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

HTML Formok (GET és POST)

Amikor egy formot elküldünk egy PHP sciptnek, a form összes változója a PHP segítségével automatikusan elérhetővé válik a script számára. Például, nézd meg az alábbi formot:

Példa 7-1. Egyszerű form változó

  1 
  2 
  3 <form action="foo.php" method="post">
  4     Name: <input type="text" name="name"><br>
  5     <input type="submit">
  6 </form>
  7 
  8       

Ha elküldjük, a PHP létrehozza a $name, változót, amiben az lesz, amit a form Name: mezejébe írtunk.

A PHP a csoportosított form változókból egydimenziós tömböket származtat. Például hasznos lehet csoportosítani az összetartozó változókat, vagy az olyan form elemeket, ahol több lehetőség közül nem csak egy választható.

Példa 7-2. Összetettebb form változók

  1 
  2 
  3 <form action="array.php" method="post">
  4     Name: <input type="text" name="personal[name]"><br>
  5     Email: <input type="text" name="personal[email]"><br>
  6     Beer: <br>
  7     <select multiple name="ital[]">
  8         <option value="warthog">Warthog
  9         <option value="guinness">Guinness
 10         <option value="stuttgarter">Stuttgarter Schwabenbr&auml;u
 11         </select>
 12     <input type="submit">
 13 </form>
 14 
 15       

Ha a PHP track_vars lehetősége be van kapcsolva, vagy a track_vars konfigurációs beállítás, vagy az Apache php_track_vars direktívájával, akkor a POST vagy GET metódussal elküldött változók megtalálhatók lesznek a globális $HTTP_POST_VARS ill. $HTTP_GET_VARS asszociatív tömbökben.

IMAGE SUBMIT változónevek

Form elküldésekor megoldható, hogy gomb helyett képet használunk egy ilyesféle tag segítségével:

  1 
  2 
  3 <input type=image src="image.gif" name="sub">
  4 
  5       

Ha a felhasználó a képre kattint, az elküldött form adatok, amik a szerverhez eljutnak, két speciális változót tartalmaznak: sub_x-et és sub_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, amiket a server megkap, nem is aláhúzást, hanem pontot tartalmaznak, de a PHP a pontot automatikusan aláhúzássá konvertálja.

HTTP cookie-k

A PHP támogatja a Netscape specifikációja által definiált HTTP cookie-kat. A cookie egy mechanizmus, ami 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. Cookie-kat a SetCookie() függvénnyel lehet beállítani. A cookie-k 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 cookie, amit küldenek neked a klienstől, 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 cookie-hoz, egyszerűen rakj []-t a cookie neve után. Például:

  1 
  2 
  3 SetCookie ("MyCookie[]", "Testing", time()+3600);
  4 
  5      

Vigyázz, mert egy cookie felülírja az előző azonos cookie-t, hacsak nem különbözik a path vagy a domain. Így egy bevásárlókocsiféleséghez jó odarakni egy számlálót, hogy megkerüljük a problémát.

Példa 7-3. SetCookie Példa

  1 
  2 
  3 $Count++;
  4 SetCookie ("Count", $Count, time()+3600);
  5 SetCookie ("Cart[$Count]", $item, time()+3600);
  6 
  7      

Környezeti változók

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

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

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 script megkapja őket. A pont viszont nem érvényes karakter egy PHP változóneven belül. Az ok megértéséért nézd csak:
  1 
  2 
  3 $varname.ext;  /* érvénytelen változónév */
  4 
  5      
Most a parser lát egy változót, amit $varname-nek hívnak, amit egy stringösszefűző operátor követ, majd egy csupasz string (idézőjel nélküli string, ami nem egyezik semmilyen ismert kulcsszóval, vagy lefoglalt kulcsszóval) az ext. Ez nem a kívánt eredmény.

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().