Include (skládání stránek z kousků)

Upozornění: Tento článek byl napsán před mnoha lety a některé informace mohou být zastaralé, nebo nepravdivé. Při čtení na to, prosím, berte ohled.

V dnešním článku se naučíme načítat textové soubory ze složky a následně je jednoduše vypisovat.

Podporované formáty

Vkládat lze libovolný formát souboru, jen je potřeba si uvědomit, že PHP pracuje se souborem jako s textem, proto je vhodné vkládat jen textové soubory.

Ideální proto je vkládat textové soubory txt, html, md a podobně.

Po vložení PHP souboru bude automaticky jeho obsah vykonán a bude se zpracovávat stejně, jako kdyby kód na daném místě fyzicky existoval.

Skládání stránky – stejný obsah

Asi každý tvůrce většího webu čistě v HTML mi dá za pravdu, že jeho aktualizace není vůbec snadná. Celý proces webu je zhruba takový:

  • Autor vymyslí položky v menu a vytvoří odkazy na podstránky
  • Následně se všechny podstránky vytvoří se stejným menu
  • Pokud je potřeba přidat jen jedinou položku menu, tak je potřeba znovu projít všechny podstránky a ručně tam překopírovat to nové

Není to trochu otrava? PHP umí poměrně snadno kopírovat stejné části textů a zdrojových kódů do různých souborů.

Nyní lze celé menu uložit na př. do souboru menu.html a následně jen uvádět načítací funkci include:

1 include 'menu.html';

Můžete načítat textový soubor, HTML a PHP stránku.

Při načtení PHP stránky se vložené scripty spustí, takže můžete vykonávat i jejich obsah.

Pozor: Pokud vkládáte soubory dynamicky, je dobré si ohlídat, že nemůže dojít k vložení PHP souboru a jeho následného vykonání.

Správně by se měly textové soubory vkládat jako text a patřičně escapovat:

1 echo htmlspecialchars(file_get_contents('menu.html'));

Díky tomu není možné v souboru podstrčit záškodnický kód, který by se spustil.

Skládání stránky – podobný obsah

Někdy potřebujete udělat jednoduchý web, kdy vypadají všechny stránky stejně, ale mění se jen určitá část. Typicky takto vypadají blogy – mají stejnou hlavičku, menu a patičku – jen obsah článků se mění.

Toto se dá řešit tak, že si vytvoříte jednu zobrazovací stránku a na místo článku vložíte funkci include, která bude jednotlivé články načítat ze složky (každý jako extra soubor). Podobně funguje i tento web.

Zdroják k redakčnímu systému

Tento kód předpokládá, že jsou všechny články uloženy ve složce clanky a jejich jméno je ve tvaru ________.html.

1 $article = $_GET['clanek']; // zjištění jména článku
2 
3 include 'clanky/' . $article . '.html'; // vypsání článku

Celé to funguje tak, že script přijme jméno článku metodou GET (z URL adresy) a načte soubor tohoto jména. Jak funguje načítání z adresy jsem popisoval v předchozím článku.

1 include 'include-soubor.html';

Závěr

Obecně se dá říct, že funkce include poměrně dost zjednodušuje práci se stejnými daty a umožňuje jednoduše načítat jiné soubory a takto tvořit dynamický web. Umí ale pouze načítat soubory, ke kterým má přístup přes relativní adresu (tj. u vás na serveru), pokud si chcete načíst vzdálený text (třeba webovou stránku), tak musíte využít funkci file_get_conten­ts, to je ale zatím zbytečně složité.

Pokračujte na další článek