La construction comprend

📅   11. 09. 2019
👤   Jan Barášek
| 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     En savoir plus sur l'auteur

L'auteur travaille comme développeur principal et architecte logiciel à Prague. Il conçoit et gère de grandes applications web que vous connaissez et utilisez. Depuis 2009, il a acquis une grande expérience qu'il transmet par le biais de ce site web.

Je serai heureux de vous aider:

Contact