PHP Manual
/
Arbejde med filer

Konstruktionen omfatter

11. 09. 2019

Obsah článku

| Støtte | PHP 4, PHP 5, PHP 7

|---------------|--------- | Kort beskrivelse | Tilføjer en anden tekstfil eller et andet script til scriptet. | Krav | Anden tekstfil eller script, der skal indsættes. | Bemærk | Kan ikke indlæse eksterne filer.

Beskrivelse

Indsætter en anden tekstfil eller et script på siden. Understøtter almindelige/tekstfiler.

Indlejrede filer opfører sig, som om de var direkte på siden.

Indlejrede scripts udføres automatisk.

Det indlejrede script overfører værdien af variabler.

Kan ikke indlæses fra eksternt lager. Kan kun læse almindelig uformateret tekst og PHP-filer.

Tilladte stiformater:

  • script.php - fil i samme mappe, vil blive eksekveret
  • script.html - fil i samme mappe, vil ikke blive eksekveret
  • ./file.php - fil i samme mappe, vil blive udført
  • ../page.html
  • folder\file\file.php - skriv i Windows
  • address/DalsiAddress/file.php - skrivning på Unix-systemer

Skråstreger af typen **** og **/** kan interkonverteres, så du behøver ikke at tage dig af det.

Ulovlig stiangivelse: https://domena.pripona/slozka/soubor.php

Lignende funktioner

Eksempel

include 'file.php';

Den indsætter scriptet file.php i siden og kører det.

vars.php

$color = 'grøn';
$fruit = 'æble';

test.php

$color = '';
$fruit = '';
echo 'A' . $color . '' . $fruit; // A
include 'vars.php';
echo 'A' . $color . '' . $fruit; // Et grønt æble

ADVARSEL: Følgende notation er ikke mulig, overfør indholdet af variabler ved at definere dem!

include 'file.php?parameter=neco';

Returneringsværdier

Ingen, lægger bare filen ind.

BEMÆRK: Giver dig mulighed for at sammenligne filindhold, men det er en sikkerhedsrisiko. Rækkefølgen af parenteserne er vigtig! Eksempel:

if ((include 'file.php') == 'OK') {
echo 'Værdien er "OK".';
}

Dette er en potentiel sikkerhedsrisiko!

Kan løses med file_get_contents(), readfile() eller fopen(). Fopen() bør kun bruges til .txt- og .html-filer.

Sikker læsning af filen kan løses ved at definere en brugerdefineret funktion.

Eksempel:

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

Noter og tips fra andre udviklere

Jakub Vrána sendte mig en e-mail:

include 'artikler/' . $_GET['Artikel'] . '.html';

Det er ekstremt farligt.

En angriber kan sende et link til en anden mappe ved at bruge ../ eller noget lignende som artikelnavn, og nogle gange er det muligt at slippe af med enden ved at sende en null-byte i slutningen.

Du bør i det mindste bruge funktionen basename(), men det er bedre kun at tillade whitelist-værdier.

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