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

11. 9. 2019
Підтримка PHP 4, PHP 5, PHP 7
Короткий опис Додає до сценарію інший текстовий файл або скрипт.
Вимоги Інший текстовий файл або скрипт, який необхідно вставити.
Примітка Неможливо завантажити зовнішні файли.

Oпис

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

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

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

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

Неможливо завантажити з зовнішнього накопичувача. Може читати тільки звичайний неформатований текст і 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.

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

Приклад

php
include 'file.php';

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

`vars.php

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

test.php

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

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

php
include 'file.php?parameter=neco';

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

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

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

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

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

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

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

Приклад:

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

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

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

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

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

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

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

Jan Barášek
Jan BarášekVí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:

Newsletter

Nejlepsi tipy a triky o PHP do Vaseho e-mailu. Clanky a novinky nejen ze sveta PHP a programovani.