/
Lavorare con i file

La costruzione include

11. 09. 2019

Obsah článku

| Supporto | PHP 4, PHP 5, PHP 7

|---------------|--------- | Descrizione breve | Aggiunge un altro file di testo o uno script allo script. | Requisiti | Altro file di testo o script da inserire. | Nota | Impossibile caricare file esterni.

Descrizione

Inserisce un altro file di testo o uno script nella pagina. Supporta i file di testo.

I file incorporati si comportano come se fossero direttamente nella pagina.

Gli script incorporati vengono eseguiti automaticamente.

Lo script incorporato trasferisce il valore delle variabili.

Non può essere caricato da una memoria esterna. Può leggere solo testo semplice non formattato e file PHP.

Formati di percorso consentiti:

  • script.php - file nella stessa directory, sarà eseguito
  • script.html - file nella stessa directory, non sarà eseguito
  • ./file.php - file nella stessa directory, sarà eseguito
  • ../page.html
  • Cartellefile\file.php` - scrivere in Windows
  • address/DalsiAddress/file.php - scrivere su sistemi Unix

Gli slash di tipo **** e **/** possono interconvertirsi, quindi non devi occupartene.

Voce di percorso illegale: https://domena.pripona/slozka/soubor.php.

Funzioni simili

Esempio

include 'file.php';

Inserisce lo script file.php nella pagina e lo esegue.

vars.php.

$color = 'verde';
$fruit = 'mela';

test.php.

$color = '';
$fruit = '';
echo 'A' . $color . '' . $fruit; // A
include 'vars.php';
echo 'A' . $color . '' . $fruit; // Una mela verde

ATTENZIONE: La seguente notazione non è possibile, trasferire il contenuto delle variabili definendole!

include 'file.php?parameter=neco';

Valori di ritorno

Nessuna, mette solo il file.

NOTA: Permette di confrontare il contenuto dei file, ma questo è un rischio per la sicurezza. L'ordine delle parentesi conta! Esempio:

if ((include 'file.php') == 'OK') {
echo 'Il valore è "OK".';
}

Questo è un potenziale rischio per la sicurezza!

Può essere risolto con file_get_contents(), readfile() o fopen(). Fopen() dovrebbe essere usato solo su file .txt e .html.

Una lettura più sicura del file può essere risolta definendo una funzione personalizzata.

Esempio:

$string = get_include_contents('qualche file.php');
function get_include_contents(string $filename): ?string
{
if (is_file($filename)) {
ob_start();
include (string) $filename;
return ob_get_clean();
}
return null;
}

Note e suggerimenti di altri sviluppatori

Jakub Vrána mi ha mandato una mail:

include 'articoli/' . $_GET['Articolo'] . '.html';

Questo è estremamente pericoloso.

Un attaccante può passare un link a un'altra directory usando ../ o qualcosa di simile come nome dell'articolo, e a volte è possibile liberarsi del finale passando un byte nullo alla fine.

Dovresti almeno usare la funzione basename(), ma è meglio permettere solo i valori della whitelist.

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.