PHP (21) - Vkládání souborů
PHP umožňuje mít jeden web v několika zdrojových
souborech. V tomto díle seriálu se podíváme, jak tyto soubory skládat
dohromady.
7.7.2004 15:00 |
Petr Zajíc
| Články autora
| přečteno 76762×
Často bývá potřeba rozdělit jeden web na několik souvisejících
souborů. Respektive to bývá potřeba skoro vždycky. Dnes se podíváme,
jak PHP vkládání souboru řeší a jak to použít v praxi.
PHP, jak jsme již v tomto seriálu uvedli, je jazyk interpretovaný,
nikoliv kompilovaný. Při provádění skriptu lze do sebe celkem
bezbolestně vkládat několik
zdrojových souborů. Když budeme chtít například stvořit web se
sloupcovou úpravou, možná budeme chtít mít každý sloupec v samostatném
souboru php. Taková věc je někdy životní nutností - kvůli orientaci.
Celé by to mohlo vypadat nějak takhle:
<?
echo "levá
část";
?>
(levá část)
<?
echo "Tohle
bude prostředek";
?>
(prostřední část)
<?
echo "Něco
bude vpravo";
?>
(pravá část)
<TABLE height="100%"
width="100%" border="1">
<TR>
<TD width=20% valign="top">
<?require "21_left.php"?>
</TD>
<TD width=60% valign="top">
<?include "21_middle.php"?>
</TD>
<TD width=20% valign="top">
<?include "21_right.php"?>
</TD>
</TR>
</TABLE>
(soubor s několika vloženími) | Spustit skript
include, require
Příkazy include
a require
se používají pro vložení zdrojového
souboru php na určité místo v jiném souboru. Vložený soubor se ve
výsledku chová tak, jako by byl na daném místě odjakživa. To znamená,
že pokud je v něm kód jazyka PHP, normálně se provede. Require se chová
úplně stejně jako include; rozdíl je pouze v tom, co se stane, když
požadovaný
soubor k začlenění chybí. Include vyprodukuje varování, require fatální
chybu. Umístění include a require souborů vůči souboru, do nějž se bude
vkládat může být být dáno buď relativní cestou, nebo pomocí
konfigurační proměnné include_path při instalaci PHP. Začleněné soubory
se chovají skutečně "jako by tam byly odjakživa", takže jestliže je
například v začleňovaném souboru definována funkce, skript, do něhož se
začleňuje může tuto funkci využít.
include_once, require_once
Tyto příkazy fungují stejně jako předchozí dva, jen s tím rozdílem,
že zabrání opětovnému vložení dvakrát stejného souboru. Při sestavování
složitějších projektů může situace, kdy nevíte zda soubor byl či nebyl
vložen, skutečně nastat, takže se to hodí. Vložení dvakrát téhož
souboru může celý skript snadno zablokovat, protože například definovat
dvakrát funkci se stejným názvem je nepřípustné.
readfile
Funkce readfile
přečte nějaký soubor a tak jak je ho vloží do
výstupního proudu. To znamená, že soubor není zpracován jako PHP
skript, ale je tupě převzat a odeslán prohlížeči. Zajímavostí pěti výše
uvedených příkladů je také to, že dokáží číst nejen soubory operačního
systému, ale i
soubory získané pomocí protokolů http nebo ftp. Přebírání informací z
cizích zdrojů tímto způsobem
byste se však měli pokud možno vyhnout, protože mohou představovat
vysoká bezpečností rizika.
die a exit
V souvislosti se začleňováním souborů vzniká otázka, jak je to s
přerušováním běhu skriptů. K tomu slouží příkazy die, exit a return.
Příkaz die je trochu zákeřný. Provede okamžité ukončení provádění
skriptu. Jesliže ale byl skript vložen v jiném skriptu, ukončí se ten
rodičovský také. To může mít neblahé důsledky, protože tak například
může vzniknout neplatný kód. Příkaz die proto používám dost nerad.
Die akceptuje nepovinný řetězcový parametr, který se předá do
prohlížeče jako poslední text předtím, než PHP přeruší provádění
skriptu. Příkaz exit funguje stejně jako die, jen nepřebírá žádné
parametry a končí hned. Takže, kdybychom ve výše uvedeném příkladu
modifikovali soubor 21_middle.php takto:
<?
echo "Tohle
bude prostředek";
die ("Pokračuj v pekle...");
?>
zjistíte (ukázka),
že zbytek skriptu se neprovedl a odeslali jsme neplatný kód HTML,
protože máme neuzavřenou tabulku.
return
Return přece známe: Doposud jsme jej používali jako příkaz pro
vrácení hodnoty z funkce. Ale jestliže je return použit v těle skriptu
a ne ve funkci, ukončí provádění aktuálního skriptu. Narozdíl od die a
exit však umožňuje pokračovat "rodičovským" skriptem v případě, kdo
voláme return z vloženého souboru. Takže takto upravený "prostřední"
soubor
ke vložení:
<?
echo "Tohle
bude prostředek";
return;
?>
způsobí, že následující kód se provede (ukázka).
Poznámky
- Vkládání souborů se používá často. Většinou se v nich dělá
pořádek pomocí názvů.
- Pozor na die. Může Vám vzniknout syntakticky neplatná stránka,
když jej zavoláte s příliš horkou hlavou.
- Vkládání vzdálených souborů není dobrý nápad z hlediska
bezpečnosti. Zejména pokud nemáte možnost ovlivnit, co vkládáte.
- Include soubor se dá použít s výhodou například ke vložení
konfiguračních hodnot.
- Vložené soubory mohou obsahovat další vložené soubory. Ale
vyznáte se v tom?
V dalším díle seriálu o PHP se podíváme na regulární výrazy.
Verze pro tisk
|
Příspívat do diskuze mohou pouze registrovaní uživatelé.
|
|

Vyhledávání software

Vyhledávání článků
28.11.2018 23:56 /František Kučera Prosincový sraz spolku OpenAlt se koná ve středu 5.12.2018 od 16:00 na adrese Zikova 1903/4, Praha 6. Tentokrát navštívíme organizaci CESNET. Na programu jsou dvě přednášky: Distribuované úložiště Ceph (Michal Strnad) a Plně šifrovaný disk na moderním systému (Ondřej Caletka). Následně se přesuneme do některé z nedalekých restaurací, kde budeme pokračovat v diskusi.
Komentářů: 1
12.11.2018 21:28 /Redakce Linuxsoft.cz 22. listopadu 2018 se koná v Praze na Karlově náměstí již pátý ročník konference s tématem Datová centra pro business, která nabídne odpovědi na aktuální a často řešené otázky: Jaké jsou aktuální trendy v oblasti datových center a jak je optimálně využít pro vlastní prospěch? Jak si zajistit odpovídající služby datových center? Podle jakých kritérií vybírat dodavatele služeb? Jak volit vhodné součásti infrastruktury při budování či rozšiřování vlastního datového centra? Jak efektivně datové centrum spravovat? Jak co nejlépe eliminovat možná rizika? apod. Příznivci LinuxSoftu mohou při registraci uplatnit kód LIN350, který jim přinese zvýhodněné vstupné s 50% slevou.
Přidat komentář
6.11.2018 2:04 /František Kučera Říjnový pražský sraz spolku OpenAlt se koná v listopadu – již tento čtvrtek – 8. 11. 2018 od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Tentokrát bez oficiální přednášky, ale zato s dobrým jídlem a pivem – volná diskuse na téma umění a technologie, IoT, CNC, svobodný software, hardware a další hračky.
Přidat komentář
4.10.2018 21:30 /Ondřej Čečák LinuxDays 2018 již tento víkend, registrace je otevřená.
Přidat komentář
18.9.2018 23:30 /František Kučera Zářijový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 20. 9. 2018 od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Tentokrát bez oficiální přednášky, ale zato s dobrým jídlem a pivem – volná diskuse na téma IoT, CNC, svobodný software, hardware a další hračky.
Přidat komentář
9.9.2018 14:15 /Redakce Linuxsoft.cz 20.9.2018 proběhne v pražském Kongresovém centru Vavruška konference Mobilní řešení pro business.
Návštěvníci si vyslechnou mimo jiné přednášky na témata: Nejdůležitější aktuální trendy v oblasti mobilních technologií, správa a zabezpečení mobilních zařízení ve firmách, jak mobilně přistupovat k informačnímu systému firmy, kdy se vyplatí používat odolná mobilní zařízení nebo jak zabezpečit mobilní komunikaci.
Přidat komentář
12.8.2018 16:58 /František Kučera Srpnový pražský sraz spolku OpenAlt se koná ve čtvrtek – 16. 8. 2018 od 19:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát jsou tématem srazu databáze prezentaci svého projektu si pro nás připravil Standa Dzik. Dále bude prostor, abychom probrali nápady na využití IoT a sítě The Things Network, případně další témata.
Přidat komentář
16.7.2018 1:05 /František Kučera Červencový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 19. 7. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát bude přednáška na téma: automatizační nástroj Ansible, kterou si připravil Martin Vicián.
Přidat komentář
Více ...
Přidat zprávičku
 Poslední diskuze
31.7.2023 14:13 /
Linda Graham iPhone Services
30.11.2022 9:32 /
Kyle McDermott Hosting download unavailable
13.12.2018 10:57 /
Jan Mareš Re: zavináč
2.12.2018 23:56 /
František Kučera Sraz
5.10.2018 17:12 /
Jakub Kuljovsky Re: Jaký kurz a software by jste doporučili pro začínajcího kodéra?
Více ...
|