PHP Manual
/
Praca z plikami

Konstrukcja obejmuje

11. 09. 2019

Obsah článku

| 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.

Opis

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 wykonany
  • script.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 Windows
  • address/DalsiAddress/file.php - zapis w systemach Unix

Ukoś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.

Podobne funkcje

Przykład

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; // A
include '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';

Wartości zwracane

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;
}

Uwagi i wskazówki od innych programistów

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:

Související články

1.
4.
Status:
All systems normal.
2024