Gå til innhold

legger alle siden i /sider


Anbefalte innlegg

hvordan får man så man legger alle "sidene" i f.eks /sider/ og når du skriver f.eks index.php?side=index henter man automatisk en fil som heter index.inc. Så du slipper å skrive inn i index fila for hver gang du har lagt ut en ny side at den skal hente den.??

Lenke til kommentar
Videoannonse
Annonse
<?php
$fil = $_GET['side'];

include "$fil.php";
?>

 

Står ikke dette greit forklart i en sticky her?

funket det men når jeg går inn på siden uten å skrive noe i ?side=asdad bare filnavnet kommer dette her:

 

Warning: main(.php): failed to open stream: No such file or directory in /hsphere/local/home/************ on line 4

 

Warning: main(): Failed opening '.php' for inclusion (include_path='.:/usr/local/lib/php') in /hsphere/local/home/**************** on line 4

 

Hvordan fikse på det?

Lenke til kommentar

Du kan sjekke om fila eksisterer før du inkluder. Men jeg for min del ville hatt bedre sjekk om fila er innenfor rett område. At du bare skal ha lov til å innkludere fil fra en spesifisert mappe. Hvis jeg hadde skrevet side=../../../osv så kunne jeg hatt muligheten for å innkludere en fil som ikke var ment for å innkludere.

 

En utestet kodesnutt:

$tillatt_mappe = '/hsphere/local/home/blablabla';
$side = realpath($_GET['side'].".php");
if($side !== false && strpos($side, $tillatt_mappe) !== false) {
include($side);
}

 

En miniforklaring:

$tillatt_mappe inneholder en string som tilsvarer path/mappe som path'en må begynne med.

 

realpath sjekker om fila/mappa eksisterer og gjør den om til /hsphere/local/... osv, den gir en ekte realpath av fila du prøver å innkludere. Addet .php stringen slik du har i ditt eksempel.

 

if'en sjekker om realpath ikke feilet (den gir false istedet for string når den feiler), sjekker at $tillatt_mappe stringen finnes i $side (realpath genererte en realpath string i $side). Når if'en gikk ok, vil den inkludere $side.

 

Om siden du skal innkludere ligger i en annen mappe, så kan du f.eks si index.php?side=en_annen_mappe/siden_som_skal_lastes

 

Da vil realpath (relativt) bli /hsphere/local/blabla/en_annen_mappe/siden_som_skal_lastes.php (vel å merke at fil og mappe eksisterer)

Endret av FuLu
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...