| Podpora | PHP 4, PHP 5, PHP 7
|---------------|--------- | Krátky popis | Pripojí ďalší textový súbor alebo skript k skriptu. | Požiadavky | Iný textový súbor alebo skript, ktorý sa má vložiť. | Poznámka | Nemožno načítať externé súbory.
Vloží do stránky ďalší textový súbor alebo skript. Podporuje obyčajné/textové súbory.
Vložené súbory sa správajú, ako keby boli priamo na stránke.
Vložené skripty sa vykonávajú automaticky.
Vložený skript prenáša hodnoty premenných.
Nie je možné načítať z externého úložiska. Dokáže čítať iba neformátovaný text a súbory PHP.
Povolené formáty ciest:
script.php
- súbor v tom istom adresári, bude spustenýscript.html
- súbor v tom istom adresári, nebude spustený./file.php
- súbor v rovnakom adresári, bude spustený../page.html
folder\file\file.php
- zápis v systéme Windowsaddress/DalsiAddress/file.php
- zápis na unixových systémochLomítka typu ****
a **/**
sa môžu vzájomne konvertovať, takže sa tým nemusíte zaoberať.
Nezákonná položka cesty: https://domena.pripona/slozka/soubor.php
include 'file.php';
Vloží do stránky skript file.php
a spustí ho.
vars.php
$color = 'zelená';$fruit = 'jablko';
test.php
$color = '';$fruit = '';echo 'A' . $color . '' . $fruit; // Ainclude 'vars.php';echo 'A' . $color . '' . $fruit; // Zelené jablko
VAROVANIE: Nasledujúci zápis nie je možný, prenášajte obsah premenných ich definovaním!
include 'file.php?parameter=neco';
Žiadne, len vloží súbor.
POZNÁMKA: Umožňuje porovnať obsah súborov, ale predstavuje to bezpečnostné riziko. Na poradí zátvoriek záleží! Príklad:
if ((include 'file.php') == 'OK') {echo 'Hodnota je "OK"';}
Ide o potenciálne bezpečnostné riziko!
Možno vyriešiť pomocou file_get_contents(), readfile() alebo fopen(). Funkcia Fopen() by sa mala používať len na súbory .txt a .html.
Bezpečnejšie čítanie súboru možno vyriešiť definovaním vlastnej funkcie.
Príklad:
$string = get_include_contents('somefile.php');function get_include_contents(string $filename): ?string{if (is_file($filename)) {ob_start();include (string) $filename;return ob_get_clean();}return null;}
Jakub Vrána mi poslal e-mail:
include 'články/' . $_GET['Článok'] . '.html';
Je to mimoriadne nebezpečné.
Útočník môže odovzdať odkaz na iný adresár pomocou ../
alebo niečoho podobného ako názov článku a niekedy je možné zbaviť sa koncovky odovzdaním nulového bajtu na konci.
Mali by ste použiť aspoň funkciu basename()
, ale lepšie je povoliť len hodnoty z bieleho zoznamu.
Jan Barášek Více o autorovi
Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.
Rád vám pomůžu:
Články píše Jan Barášek © 2009-2024 | Kontakt | Mapa webu
Status | Aktualizováno: ... | sk