| 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.
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 Windowsaddress/DalsiAddress/file.php
- écrire sur les systèmes UnixLes 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
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; // Ainclude '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';
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;}
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:
Články píše Jan Barášek © 2009-2024 | Kontakt | Mapa webu
Status | Aktualizováno: ... | fr