Változók a PHP-n kívülről
HTML űrlapok (GET és POST)
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:
Example#1 Egy egyszerű HTML form
<form action="ize.php" method="post"> Nev: <input type="text" name="usernev" /><br /> Email: <input type="text" name="email" /><br /> <input type="submit" name="submit" value="Elküld" /> </form>
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:
Example#2 Egy egyszerű HTML POST űrlapból származó adatok elérése
<?php // PHP 4.1.0-tól használható echo $_POST['usernev']; echo $_REQUEST['usernev']; import_request_variables('p', 'p_'); echo $p_usernev; // PHP 3-tól használható. PHP 5.0.0 óta ezek a hosszú előredefiniált // változók letilthatók a register_long_arrays direktívával. echo $HTTP_POST_VARS['usernev']; // Használható, ha a register_globals PHP direktíva értéke = on. // A PHP 4.2.0 óta a register_globals alapértelmezett értéke = off. // E mód használata nem ajánlott. echo $usernev; ?>
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 https://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()
Note: 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.
Note: 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.
Example#3 Összetettebb űrlapváltozók
<?php
if (isset($_POST['muvelet']) && $_POST['muvelet'] == 'bekuldve') {
echo '<pre>';
print_r($_POST);
echo '<a href="'. $_SERVER['PHP_SELF'] .'">Próbáld újra</a>';
echo '</pre>';
} else {
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" 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="sor[]">
<option value="warthog">Warthog</option>
<option value="guinness">Guinness</option>
<option value="stuttgarter">Stuttgarter Schwabenbräu</option>
</select><br />
<input type="hidden" name="muvelet" value="bekuldve" />
<input type="submit" name="submit" value="Küld!" />
</form>
<?php
}
?>
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.
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="kep.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.
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 ezt:
<?php
$varname.ext; /* érvénytelen változónév */
?>
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, 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.