PHP Manual
/
Travailler avec des fichiers

La construction comprend

11. 09. 2019

Obsah článku

| Prise en charge de PHP 4, PHP 5 et PHP 7

|---------------|--------- | Short Description | Ajoute un autre fichier texte ou un script au script. | Exigences | Autre fichier texte ou script à insérer. | Note | Impossible de charger des fichiers externes.

Description

Insère un autre fichier texte ou un script dans la page. Prend en charge les fichiers de type texte brut.

Les fichiers incorporés se comportent comme s'ils étaient directement dans la page.

Les scripts intégrés sont exécutés automatiquement.

Le script incorporé transfère la valeur des variables.

Ne peut être chargé à partir d'un stockage externe. Ne peut lire que du texte brut non formaté et des fichiers PHP.

Formats de chemin autorisés :

  • script.php - fichier dans le même répertoire, sera exécuté
  • script.html - fichier dans le même répertoire, ne sera pas exécuté
  • ./file.php - fichier dans le même répertoire, sera exécuté
  • ../page.html
  • folders\file\file.php - écrire dans Windows
  • address/DalsiAddress/file.php - écrire sur les systèmes Unix

Les barres obliques de type **** et **/** peuvent s'interconvertir, vous n'avez donc pas à vous en occuper.

Entrée de chemin illégale : https://domena.pripona/slozka/soubor.php

Fonctions similaires

Exemple

include 'file.php';

Il insère le script file.php dans la page et l'exécute.

vars.php

$color = 'vert';
$fruit = 'pomme';

test.php

$color = '';
$fruit = '';
echo 'A' . $color . '' . $fruit; // A
include 'vars.php';
echo 'A' . $color . '' . $fruit; // Une pomme verte

AVERTISSEMENT : La notation suivante n'est pas possible, transférer le contenu des variables en les définissant !

include 'file.php?parameter=neco';

Valeurs de retour

Aucun, met juste le fichier.

NOTE: Permet de comparer le contenu des fichiers, mais cela constitue un risque pour la sécurité. L'ordre des parenthèses est important ! Exemple :

if ((include 'file.php') == 'OK') {
echo 'La valeur est "OK".';
}

Ceci est un risque potentiel pour la sécurité !

Peut être résolu avec file_get_contents(), readfile() ou fopen(). Fopen() ne doit être utilisé que pour les fichiers .txt et .html.

Une lecture plus sûre du fichier peut être résolue en définissant une fonction personnalisée.

Exemple :

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

Notes et conseils d'autres développeurs

Jakub Vrána m'a envoyé un e-mail :

include 'articles/' . $_GET['Article'] . '.html';

C'est extrêmement dangereux.

Un attaquant peut transmettre un lien vers un autre répertoire en utilisant ../ ou quelque chose de similaire comme nom d'article, et il est parfois possible de se débarrasser de la fin en passant un octet nul à la fin.

Vous devriez au moins utiliser la fonction basename(), mais il est préférable de n'autoriser que les valeurs de la liste blanche.

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