PHP Manual

Конструкція включає в себе

11. 09. 2019

| Підтримка | PHP 4, PHP 5, PHP 7

|---------------|--------- | Короткий опис | Додає до сценарію інший текстовий файл або скрипт. | Вимоги | Інший текстовий файл або скрипт, який необхідно вставити. | Примітка | Неможливо завантажити зовнішні файли.

Опис

Вставляє на сторінку інший текстовий файл або скрипт. Підтримує звичайні/текстові файли.

Вбудовані файли поводяться так, ніби вони знаходяться безпосередньо на сторінці.

Вбудовані скрипти виконуються автоматично.

Вбудований скрипт передає значення змінних.

Неможливо завантажити з зовнішнього накопичувача. Може читати тільки звичайний неформатований текст і PHP-файли.

Допустимі формати шляхів:

  • script.php - файл в тому ж каталозі, буде виконуватися
  • script.html - файл в тому ж каталозі, виконуватися не буде
  • ./file.php - файл в тому ж каталозі, буде виконуватися
  • ../page.html.
  • folder\file\file.php - запис в Windows
  • address/DalsiAddress/file.php - запис на Unix системах

Косі риски типу **** і **/** можуть взаємоперетворюватися, тому вам не доведеться мати з цим справу.

Нелегальний вхід в систему: https://domena.pripona/slozka/soubor.php.

Аналогічні функції

Приклад

include 'file.php';

Він вставляє на сторінку скрипт file.php і запускає його на виконання.

`vars.php

$color = 'зелений';
$fruit = 'яблуко';

test.php

$color = '';
$fruit = '';
echo 'A' . $color . '' . $fruit; // A
include 'vars.php';
echo 'A' . $color . '' . $fruit; // Зелене яблуко

УВАГА: Наведені нижче позначення неможливі, передавайте вміст змінних шляхом їх визначення!

include 'file.php?parameter=neco';

Значення, що повертаються

Ні, просто ставить файл.

ПРИМІТКА: Дозволяє порівнювати вміст файлів, але це є ризиком для безпеки. Порядок дужок має значення! Приклад:

if ((include 'file.php') == 'ГАРАЗД.') {
echo 'Значення "ОК"';
}

Це потенційна загроза безпеці!

Може бути вирішена за допомогою file_get_contents(), readfile() або fopen(). Fopen() слід використовувати тільки для файлів .txt та .html.

Безпечне читання файлу можна вирішити, визначивши спеціальну функцію.

Приклад:

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

Зауваження та поради від інших розробників

**Якуб Врана написав мені електронною поштою:

include 'статті/' . $_GET['Стаття'] . '.html';

Це вкрай небезпечно.

Зловмисник може передати посилання на інший каталог, використовуючи в якості назви статті ../ або щось подібне, а іноді вдається позбутися закінчення, передавши в кінці нульовий байт.

Ви повинні як мінімум використовувати функцію basename(), а краще дозволити тільки значення білого списку.

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