Gå til innhold

finner ikke filen jeg includer


Anbefalte innlegg

Når jeg endelig har fått serveren til å skjønne at jeg kjører php, vil den ikke finne sidene jeg includer

 

Kjører

<?PHP
$site = $_GET['page'];
$page = "/pages/";
$page .= $site;

if(! $site) {
 $page = "pages/main";
 $site = "";
}
?>

øverst på siden for å finne ut hvor brukeren skal hen

Alle sider ligger i katalogen pages - derav knotingen med strenger.

 

Bruk av include i dokumentet (include på linje 45)

<div id="main">
     <?php include("$page.html"); ?>
   </div>

 

Nå kommer serveren opp med

Warning: Unable to access /pages/hardware.html in /customers/disabused.com/disabused.com/httpd.www/index.php on line 45

 

Warning: Failed opening '/pages/hardware.html' for inclusion (include_path='.:/usr/share/pear:/usr/share/php/PEAR') in /customers/disabused.com/disabused.com/httpd.www/index.php on line 45

 

Grunnen til at jeg har $site er at jeg bruker det i title ;)

Endret av enden
Lenke til kommentar
Videoannonse
Annonse
jo men siden ligger der :cry:

Alt virker fint på hjemmeserveren min, og jeg har bare kopiert hele strukturen (uten feil - har sjekket og dobbeltsjekket)

Hva om du forandrer

$page = "/pages/";

til

$page = "./pages/";

?

 

Ved include mener php filsystemets rot, ikke brukerens www-rot.

Alternativt kan du bruke:

$page="/customers/disabused.com/disabused.com/httpd.www/pages/";

 

Edit: Alternativt:

$page = getcwd()."/pages/";

Endret av sven-o
Lenke til kommentar

Takk gud for forumet. Nå får jeg igjen for alle gangene jeg har vært snill og skrevet (mer eller mindre gode) avhandlinger til hml n00bs :)

 

Det der hadde ikke jeg funnet ut om så verden stod for fall :)

 

Men hvorfor skjønte den automatisk verdien jeg ga $page i if-setningen? Det var nemlig ikke noe problem med å ikke oppgi page argumentet i det hele tatt

Endret av enden
Lenke til kommentar
Men hvorfor skjønte den automatisk verdien jeg ga $page i if-setningen? Det var nemlig ikke noe problem med å ikke oppgi page argumentet i det hele tatt

Tenkte du på denne?

if(! $site) {
$page = "pages/main";
$site = "";
}

Tror php tolker pages/ og ./pages/ som det samme. Er ikke sikker though...

 

 

Tips: Mulig du har forenklet koden din her, men du burde være litt mer forsiktig med å inkludere filer direkte fra $_GET['page'].

F. eks kan du ha et array med lovlige sider, og sjekke $_GET['page'] mot dette, slik:

$lovlige = Array("main","news","rompatilmor");
if(!in_array($_GET['page'],$lovlige))
   exit("Skamme seg!");

Lenke til kommentar

Har ikke lagt inn noen validering på page argumentet enda nei. Sitter og vurdere et par metoder opp mot hverandre

 

Men takk for tipset om !in_array(). Den kunne jeg ikke. Mye rart php har som jeg ikke har sett/brukt andre steder

Endret av enden
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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...