| Obsługa | PHP 4, PHP 5, PHP 7
|---------------|--------- | Krótki opis | Dołącza do skryptu inny plik tekstowy lub skrypt. | Wymagania | Inny plik tekstowy lub skrypt, który ma zostać wstawiony. | Uwaga | Nie można załadować plików zewnętrznych.
Wstawia do strony inny plik tekstowy lub skrypt. Obsługuje pliki zwykłe/tekstowe.
Pliki osadzone zachowują się tak, jakby znajdowały się bezpośrednio na stronie.
Wbudowane skrypty są wykonywane automatycznie.
Wbudowany skrypt przekazuje wartości zmiennych.
Nie można załadować z pamięci zewnętrznej. Może odczytywać tylko zwykły niesformatowany tekst i pliki PHP.
Dozwolone formaty ścieżek:
script.php
- plik w tym samym katalogu, zostanie wykonanyscript.html
- plik w tym samym katalogu, nie zostanie wykonany./file.php
- plik w tym samym katalogu, zostanie wykonany../strona.html
.folderfile.php
- zapis w systemie Windowsaddress/DalsiAddress/file.php
- zapis w systemach UnixUkośniki typu ****
i **/**
mogą być konwertowane, więc nie trzeba się tym zajmować.
Niewłaściwy wpis w ścieżce: https://domena.pripona/slozka/soubor.php
.
include 'file.php';
Wstawia on skrypt file.php
na stronę i uruchamia go.
vars.php
.
$color = 'zielony';$fruit = 'jabłko';
test.php
.
$color = '';$fruit = '';echo 'A' . $color . '' . $fruit; // Ainclude 'vars.php';echo 'A' . $color . '' . $fruit; // Zielone jabłko
UWAGA: Poniższa notacja nie jest możliwa, należy przekazywać zawartość zmiennych poprzez ich definiowanie!
include 'file.php?parameter=neco';
Brak, po prostu umieszcza plik.
UWAGA: Umożliwia porównywanie zawartości plików, ale stanowi to zagrożenie dla bezpieczeństwa. Kolejność nawiasów ma znaczenie! Przykład:
if ((include 'file.php') == 'OK') {echo 'Wartością jest "OK".';}
Jest to potencjalne zagrożenie bezpieczeństwa!
Można to rozwiązać za pomocą file_get_contents(), readfile() lub fopen(). Funkcja Fopen() powinna być używana tylko do plików .txt i .html.
Bezpieczniejsze odczytywanie pliku można rozwiązać, definiując własną funkcję.
Przykład:
$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 wysłał mi e-mail:
include 'artykuły/' . $_GET['Artykuł'] . '.html';
Jest to bardzo niebezpieczne.
Atakujący może przekazać łącze do innego katalogu, używając ../
lub czegoś podobnego jako nazwy artykułu, a czasami możliwe jest pozbycie się końcówki przez przekazanie na końcu bajtu null.
Powinieneś przynajmniej użyć funkcji basename()
, ale lepiej dopuścić tylko wartości z białej listy.
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: ... | pl