Forum und email

Niečo Užitočné

Urobme teraz niečo užitočnejšie. Chceme zistiť, aký druh prehliadača návštevník používa. Kvôli tomu skontrolujeme reťazec užívateľského agenta, ktorý prehliadač posiela ako časť HTTP požiadavky. Táto informácii je uložená v premennej. Premenné v PHP vždy začínajú znakom dolára. Premenná, o ktorú sa práve teraz zaujímame je $_SERVER['HTTP_USER_AGENT'].

Note: $_SERVER je špeciálna rezervovaná PHP premenná, ktorá obsahuje všetky informácie o web serveri. Je známa ako autoglobála (alebo superglobála). Pozrite si odpovedajúcu stránku manuálu o superglobálach pre viac informácii. Tieto špeciálne premenné boli predstavené v PHP » 4.1.0. Pred týmto časom sme miesto nich používali staršie $HTTP_*_VARS polia, ako je $HTTP_SERVER_VARS. I keď odmietané, tieto staršie premenné stále existujú. (Tiež si pozrite poznámku o starom kóde.)

Na zobrazenie tejto premennej, môžete jednoducho urobiť:

Example#1 Vypísanie premennej (Prvok poľa)

<?php echo $_SERVER['HTTP_USER_AGENT']; ?>

Vzorový výstup tohto skriptu môže byť:

Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
    

Existuje mnoho typov premenných dostupných v PHP. V hore-uvedenom príklade sme výpisali prvok Poľa. Polia môžu byť veľmi užitočné.

$_SERVER je len jedna premenná, ktorú vám PHP automaticky sprístupní. Zoznam sa dá vidieť v sekcii manuálu Rezervované Premenné alebo ich kompletný zoznam môžete získať pozrením sa na výstup funkcie phpinfo() použitej v príklade v predošlej sekcii.

Do vnútra PHP tagu môžete vložiť viaceré PHP príkazy a vytvoriť malé bloky kódu, ktoré robia viac než len jednoduché echo. Napríklad, ak chcete zistiť, či sa používa Internet Explorer, môžete urobiť toto:

Example#2 Príklad využívajúci riadiace štruktúry a funkcie

<?php
if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== FALSE) {
    echo 
'Pouzivate Internet Explorer.<br />';
}
?>

Vzorový výstup tohto skriptu môže byť:

Pouzivate Internet Explorer.<br />

Tu predstavujeme niekoľko nových konceptov. Máme príkaz if. Ak ste oboznámený so základným syntaxom používaným jazykom C, tak by vám toto malo pripadať logické. Inak by ste si pravdepodobne mali vybrať nejakú úvodnú PHP knihu a prečítať si prvých pár kapitol, alebo si prečítať časť manuálu Referencia Jazyka. Zoznam PHP kníh môžete nájsť na » https://www.php.net/books.php.

Druhý koncept, ktorý sme predstavili bolo funkčné volanie strpos() strpos() je funkcia vstavaná do PHP ktorá vyhľadáva reťazec v reťazci. V tomto prípade hľadáme 'MSIE' (takzvaná ihla) vo $_SERVER['HTTP_USER_AGENT'] (takzvaný stoh sena). Ak sa ihla nájde v stohu sena, funkcia vráti pozíciu ihly relatívne k začiatku stohu sena. Inak vracia FALSE. Ak nevráti FALSE, výraz if vyhodnotí TRUE a vykoná sa kód vo vnútri {zátvoriek}. Inak sa kód nespustí. Nebojte sa vytvárať podobné príklady, s if, else a inými funkciami ako sú strtoupper() a strlen(). Každá zodpovedajúca stránka manuálu obsahuje tiež príklady. Ak si použítím funkcie nie ste istý, budete si chcieť prečítať stránku manuálu ako čítať definíciu funkcie a sekciu o PHP funkciách.

Môžeme teda urobiť krok ďalej a ukázať ako môžete skákať do a z PHP módu, dokonca aj v strede PHP bloku:

Example#3 Miešanie módov HTML a PHP

<?php
if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== FALSE) {
?>
<h3>strpos() musela vratit nie-false</h3>
<p>Pouzivate Internet Explorer</p>
<?php
} else {
?>
<h3>strpos() musela vratit false</h3>
<p>Nepouzivate Internet Explorer</p>
<?php
}
?>

Vzorový výstup tohto skritpu môže byť:

<h3>strpos() musela vratit nie-false</h3>
<p>Pouzivate Internet Explorer</p>

Namiesto použitia PHP príkazu echo na vypísanie niečoho, vyskočili sme z PHP módu a poslali len priame HTML. Dôležitým a mocným bodom na poznamenanie je, že logický prúd skriptu zostáva netaktný. Iba jeden z HTML blokov skončí poslaním pozorovateľovi závisiac od výsledku strpos(). Inými slovami, závisí od toho, či sa reťazec MSIE našiel alebo nie.