3.1 $_SERVER
3.2 $_COOKIE
3.3 $_FILES
3.4 $_REQUEST
3.5 $_SESSION
3.6 $_GLOBALS
3.7 $_phperrormsg
PHP A FORMULÁRE
Keďže pre vysvetlenie spôsobu práce PHP s formulármi je potrebná znalosť superglobálnych premenných (najmä $_GET alebo $_POST) spojil som túto časť s vysvetlením aj ostatných superglobálnych premenných. Ale pekne postupne najprv si rozoberieme prácu s formulármi.
Zoberme si ako príklad jednoduchý formulár (predpokladá sa základná znalosť HTML - tag <FORM>) :
Príklad 19
form.html
<form action="spracuj.php" method="post"> <p>Tvoje meno : <input type="text" name="meno"></p> <p>Tvoj vek : <input type="text" name="vek"></p> <input type="submit" value="Odošli"> </form> |
Formulár bude vyzerať takto (zložitejší formulár bude použitý v blížiacej sa rekapitulácii) :
Nasleduje PHP skript :
spracuj.php
<?php echo "Ahoj voláš sa ".$_POST["meno"]." a máš ".$_POST["vek"]." rokov."; ?> |
Po spracovaní formulára (resp. skriptu spracuj.php) nám to vypľuje toto :
Formulár a skript v jednom súbore
Na toto som zabudol ,tak to doplním teraz. Veď lepšie neskoro ako nikdy.
Ako ste si všimli predošlý formulár je uložený v jednom a skript v druhom súbore. Ale čo ak si situácia vyžaduje mať skript s formulárom v jednom súbore. Môžme na to použiť prefix "!".
Príklad :
jeden.php
<form action="jeden.php" method="post"> <p>Tvoje meno : <input type="text" name="meno"></p> <p>Tvoj vek : <input type="text" name="vek"></p> <input type="submit" value="Odošli"> </form> <?php if (!$_POST) { echo "Formulár ešte nebol odoslaný"; } else { echo "Ahoj voláš sa ".$_POST["meno"]." a máš ".$_POST["vek"]." rokov."; } ?> |
Alebo môžme použiť HTML prvok hidden a jednoduchú podmienku :
jeden_2.php
<form action="jeden.php" method="post"> <p>Tvoje meno : <input type="text" name="meno"></p> <p>Tvoj vek : <input type="text" name="vek"></p> <input type="hidden" name="odoslany" value="ano"> <input type="submit" value="Odošli"> </form> <?php if ($_POST["odoslany"]=="ano") { echo "Ahoj voláš sa ".$_POST["meno"]." a máš ".$_POST["vek"]." rokov."; } ?> |
$_GET a $_POST
Čo sa vlastne stalo ?V prvom rade si všimnite ,že som metódu akou budú dáta s formulára spracované zvolil "POST". Tag <FORM> , atribút method. Tu je možné použiť namiesto "POST" , metódu "GET". Názov skriptu (atribút action) sme určili spracuj.php. Po odoslaní dát metódou POST sa nám spustil skript spracuj.php. Superglobálnu premennú $_POST nám nastavilo PHP automaticky. Ide vlastne o pole , ktoré obsahuje všetky dáta odosielané formulárom. Index (ako ste si už iste všimli) je názov jednotlivého elementu formulára. V prípade ,že by sme použili metódu "GET" , použili by sme superglobál $_GET.
Rozdiel medzi metódou GET a POST je ten ,že GET pripája prenášané dáta za URL a metóda POST zakomponuje prenášané dáta do tela HTTP. Z toho vyplýva ,že bezpečnejšie je použiť metódu POST ,keďže pri metóde GET môžme prepísať URL a bez dostatočného ošetrenia skriptu môže napáchať veľké škody !
Ďalší rozdielom je ,že $_GET má obmedzenú veľkosť premennej na 100 znakov a $_POST nemá obmedzenie.
GET , resp. $_GET má využitie pri iných prípadoch, ktoré si vysvetlíme v nasledujúcej kapitole.
Superglobálne premenné
$_POSTTáto premenná je vysvetlená o kapitolu vyššie. Tu je uvedená len pre úplnosť.
$_GET
Okrem použitia pri formulároch (namiesto bezpečnejšej $_POST) má táto superglobálna premenná využitie aj pri zbieraní hodnôt premenných z URL.
Ako sa vlastne premenné v URL používajú ?
Na predávanie premenných pomocou odkazu sa používa znak ? a &. Kde znak ? použijeme na definovanie prvej premennej a na definovanie ostatných premenných používame znak &. Objasní to príklad :
Zadanie URL : http://nas_server/skript.php?premenna1=10&premenna2=20
Skript by vyzeral takto :
Príklad 20
<?php //zadanie premenných cez URL : skript.php?premenna1=10&premenna2=20 echo "premenna1 = ".$_GET["premenna1"]."<br />"; //vypise 10 echo "premenna2 = ".$_GET["premenna2"]; //vypise 20 ?> |
$_SERVER
Server je pole ,ktoré obsahuje informácie o hlavičkách, cestách a umiesteniach skriptu. Tento superglobál bol predstavený vo verzii PHP 4.0.1 . V skorších verziách je to $HTTP_SERVER_VARS .
Položky v tomto poli vytvára web server , preto niektoré z nasledujúcej tabuľky nemusia byť funkčné. Závisí to od nastavenia web servera. Zoznam nasledujúcich parametrov nie je kompletný :
- "SERVER_NAME" - názov hostu servera, kde sa aktuálny skript vykonáva
- "SERVER_SOFTWARE" - identifikačný reťazec servera , prenášaný v hlavičkách pri odpovediach
- "REQUEST_METHOD" - zistí ,ktorá metóda bola použitá pre načítanie stránky
- "HTTP_REFERER" - obsahuje URL z ktorej bola odoslaná požiadavka na načítanie stránky. Nie je to spoľahlivá informácia ,keďže toto má na starosti prehliadač a niektoré podporujú zmenu tejto hlavičky.
- "HTTP_USER_AGENT" - obsahuje údaje z hlavičky user-agent. Je to reťazec ,ktorý obsahuje názov a typ prehliadača.
- "HTTP_ACCEPT_CHARSET" - obsahuje informáciu o kódovaní. Ak je zadaná. Napr. iso-8859-1.
- "HTTP_ACCEPT_LANGUAGE" - obsahuje informáciu o jazyku. Ak je zadaná. Napr. "sk"
- "REMOTE_ADDR" - obsahuje IP adresu užívateľa ,ktorý si pozerá stránku
- "REMOTE_HOST" - obsahuje názov host-u užívateľa ,ktorý si pozerá stránku
- "REMOTE_PORT" - port ,ktorý sa používa na komunikáciu s web serverom na strane užívateľa
- "SERVER_ADMIN" - vypíše nastavenie "server_admin" web servera Apache
- "SERVER_PORT" - vypíše port používaný web serverom pre komunikáciu s okolitým svetom. Štandardne je to "80".
- "SCRIPT_NAME" - obsahuje cestu k atkuálnemu skriptu
Príklad :
echo $_SERVER["HTTP_USER_AGENT"]; // vypíše rodinu a typ Vášho prehliadača.
$_COOKIE
Toto pole obsahuje reťazec premenných odosielaných cez HTTP cookies. Prakticky obashuje tie informácie ,ktoré sú v skripte nastavené funkciou setcookie(). (O tej si povieme neskôr v článku venovanému koláčikom)
Predstavené v PHP 4.0.1 , v predošlých verziách $HTTP_COOKIE_VARS.
Čo je cookie ?
Cookie/s v preklade koláčiky (: slúžia väčšinou na identifikáciu užívateľa. Je to malý súbor ,ktorý pošle server na používateľský počítač spolu s načítaním stránky/skriptu. V ňom má uložené rôzne informácie ,ktoré potom server/skript využíva. Napríklad keď sa prihlasujete na nejakú stránku znova a nemusíte zadávať svoje používateľské meno, alebo sa nemusíte vôbec prihlasovať. Vtedy sú použité cookies.
$_FILES
Týmto poľom server reprezentuje uploadované súbory. $_FILES je jednoduchou cestou ako uploadovať súbory.
Predstavené v PHP 4.0.1, v predošlých verziách $HTTP_FILES_VARS .
Zoznam parametrov ,ktoré definujeme :
- "file" - názov elementu použitého vo formulári (id , name)
- "name" - meno súboru
- "typ" - typ súboru podľa špecifikácie MIME
- "size" - veľkosť súboru v bajtoch
- "tmp_name" - dočasný názov súboru pod ktorým bol uložený na serveri
Uploadu súborov (kde si podrobnejšie rozoberieme toto pole) sa budeme venovať v časti venovanej práci so súbormi.
$_REQUEST
Toto pole obsahuje údaje obsiahnuté v poliach $_GET , $_POST , $_COOKIE a od PHP 4.3.1. aj $_FILES.
Možno ho napríklad použiť na zbieranie dát z formulára.
$_REQUEST["nazov elementu formulara"] - vypíše to isté ako $_GET / $_POST.
Predstavené v PHP 4.0.1 , v predošlých verziách pole neexistovalo.
$_SESSION
Predstavené v PHP 4.0.1 , v predošlých verziách $HTTP_SESSION_VARS .
Prenáša údaje aktuálnemu skriptu v rámci "sedenia".
Zápis : $_SESSION["sedenie"] = hodnota;
Session sa používa ak chcete medzi jednotlivými stránkami prenášať rôzne údaje a identifikovať užívateľa. Typickým príkladom je napríklad prihlásenie sa do mailovej schránky cez web. Prihlásením začnete session a aplikácia vie ,že do odhlásenia ste používateľom vy.
Session si samozrejme vyžaduje samostatný článok.
$_GLOBALS
Predstavené v PHP 3.0.0
Je pole ,ktoré obsahuje globálne premenné použité v skripte ,kde indexom je názov jednotlivých premenných. Problematika ohľadom $_GLOBALS je vysvetlená v článku PHP Manuál : 5. Funkcie , v časti "Premenné vo funkciách".
$_phperrormsg
Táto premenná obsahuje poslednú chybu vygenerovanú PHP. Bude fungovať len v danej oblasti a za predpoklad ,že je zapnutá voľba track_info v nastaveniach PHP. (Tá je implicitne vypnutá).
Články
Predošlý článok : 6. Knižnice
Nasledujúci článok : 8. Práca so súbormi
Odkazy
Stiahnite si príklady vypracované v článku
Kompletný zoznam elementov $_SERVER na http://php.net
Komentáre
Zdravím...
hmm ...
Na základe svojich vedomostí (podmienky,premenné a databázy) s PHP si trúfam povedať ,že funkciu hromadnej korešpondencie by v pohode PHP zvládlo aj napriek tomu ,že ju nepoznám (: .
aasdas
obrazok-foto AKO priloha formulara ?