LINUXSOFT.cz Přeskoč levou lištu
Uživatel: Heslo:  
   CZUKPL

> 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 72238×

Č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

pridej.cz

 

DISKUZE

Vložení textu ze souboru 9.1.2011 15:04 Lukáš Maršán




Příspívat do diskuze mohou pouze registrovaní uživatelé.
> Vyhledávání software
> Vyhledávání článků

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ář

18.6.2018 0:43 /František Kučera
Červnový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 21. 6. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát na téma: F-Droid, aneb svobodný software do vašeho mobilu. Kromě toho budou k vidění i vývojové desky HiFive1 se svobodným/otevřeným čipem RISC-V.
Přidat komentář

23.5.2018 20:55 /Ondřej Čečák
Od pátku 25.5. proběhne na Fakultě informačních technologií ČVUT v Praze openSUSE Conference. Můžete se těšit na spostu zajímavých přednášek, workshopů a také na Release Party nového openSUSE leap 15.0. V na stejném místě proběhne v sobotu 26.5. i seminář o bezpečnosti CryptoFest.
Přidat komentář

20.5.2018 17:45 /Redakce Linuxsoft.cz
Ve čtvrtek 31. května 2018 připravuje webový magazín BusinessIT ve spolupráci s Best Online Média s.r.o. pátý ročník odborné konference Firemní informační systémy 2018. Akce proběhne v kongresovém centru Vavruška (palác Charitas), Karlovo náměstí 5, Praha 2 (u metra Karlovo náměstí) od 9:00 hod. dopoledne do cca 15 hod. odpoledne. Konference je zaměřena na efektivní využití firemních informačních systémů a na to, jak plně využít jejich potenciál. Podrobnější informace na webových stránkách konfrence.
Přidat komentář

14.5.2018 7:28 /František Kučera
Květnový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 17. 5. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát na téma: Audio – zvuk v GNU/Linuxu.
Přidat komentář

7.5.2018 16:20 /František Kučera
Na stránkách spolku OpenAlt vyšla fotoreportáž Pražské srazy 2017 dokumentující srazy za uplynulý rok. Květnový pražský sraz na téma audio se bude konat 17. 5. 2018 (místo a čas ještě upřesníme).
Přidat komentář

17.4.2018 0:46 /František Kučera
Dubnový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 19. 4. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tématem tohoto srazu bude OpenStreetMap (OSM) aneb svobodné mapy.
Přidat komentář

16.3.2018 22:01 /František Kučera
Kulatý OpenAlt sraz v Praze oslavíme klasicky: u limonády a piva! Přijďte si posedět, dát si dobré jídlo a vybrat z mnoha piv do restaurace Kulový blesk, který najdete v centru Prahy nedaleko metra I. P. Pavlova na adrese Sokolská 13, Praha 2. Sraz se koná ve čtvrtek 22. března a začínáme v 18:00. Heslo: OpenAlt. Vezměte s sebou svoje hračky! Uvítáme, když si s sebou na sraz vezmete svoje oblíbené hračky. Jestli máte nějaký drobný projekt postavený na Arduinu, nějakou zajímavou elektronickou součástku, či třeba i pěkný úlovek z crowdfundingové akce, neváhejte. Oslníte ostatní a o zábavu bude postaráno.
Přidat komentář

   Více ...   Přidat zprávičku

> Poslední diskuze

20.2.2018 18:48 / Ivan Majer
portal

20.2.2018 15:57 / Jan Havel
Jak využíváte služby cloudu v podnikání?

16.1.2018 1:08 / Ivan Pittner
verejna ip od o2 ubuntu

15.1.2018 17:26 / Mira Harvalik
Re: Jak udělat HTML/Javascript swiping gallery do mobilu?

30.12.2017 20:16 / Michal Knoll
odmocnina

Více ...

ISSN 1801-3805 | Provozovatel: Pavel Kysilka, IČ: 72868490 (2003-2018) | mail at linuxsoft dot cz | Design: www.megadesign.cz | Textová verze