Gå til innhold

problem med require_once()


Anbefalte innlegg

Skrevet

Er det ingen måte å dynamisk ender på filnavnet man ønsker å inkludere?

 

Slik

 

sett at linken er index.php?page=settinn.php

 

require_once('../inc/side/$_GET


');

 

får bare feilmeldingen

Warning: main(../inc/side/echo $_GET


;) [function.main]: failed to open stream: No such file or directory in C:\w3docs\elkjop\main\index.php on line 51

 

som jo er fordi variabelen ikke blir innholdet, men faktisk bare selve koden.

Videoannonse
Annonse
Skrevet (endret)

For å bruke variabler inni en string må du bruke " istedenfor '

Dvs. dette burde funke:

require_once("../inc/side/$_GET['page']");
// Evt. denne:
require_once("../inc/side/" . $_GET['page']);

Endret av Loomy
Skrevet

Kan vel i samme åndedrag sleng inn et spørsmål til...

 

Er det en god ide med et design slik som skissert nedenfor.

 

Jeg har bygd opp siden med flere divver som deler designet opp og inni den ene divven har jeg en if som tester på hva slags paramter som kommer med index.php?page= .. deretter includerer jeg siden med filnavnet som kommer med page verdien.

 

Noen betenkeligheter med dette?

Driver å eksprimenterer med å bruke kun CSS i stedet for frames og sånn, så da tenkte jeg at dette kunne være ei god løsning.

Skrevet

Jeg pleier å bruke den metoden. Man må bare passe på at ikke det går inn å inkludere "externe" linker. F.Eks index.php?page=http://forum.hardware.no

Skrevet

Å inkludere direkte fra $_GET[] eller $_POST[] er ikke noe lurt i det hele tatt. Man kan da styre filpekeren nesten hvor man vil, og i værste fall kjøre uvedkommende filer.

 

link

Skrevet (endret)
Å inkludere direkte fra $_GET[] eller $_POST[] er ikke noe lurt i det hele tatt. Man kan da styre filpekeren nesten hvor man vil, og i værste fall kjøre uvedkommende filer.

 

link

Jeg bruker file_exists som sjekker om filen ligger lagret på serveren FØR den inkluderer den. Hvis filen ikke finnes kommer bare error 404.

Endret av simenss
Skrevet

Du bør nok bruke if-statements, og i stedet bruke f.eks. index.php?page=forum, eller skrive noe solid kode som sjekker at filen du kommer til å inkludere er en lovlig fil.

 

Eksempel:

 

if($_GET["page"] == "brukere") {

require(blabla);

}

else {

echo 'nothing to do';

}

 

MVH Audun

Skrevet

Det letteste og mest ryddige i det tilfelle man vil ha en begrenset mengde verdier i inkluderingsvariabelen er en switch, ja, men det var ikke det jeg mente. De aller fleste bruker includes til å erstatte frames, og da er ikke hverken switch eller if/ifelse/else et alternativ. ;)

Skrevet

Eller man kan bare droppe include i det store og hele. Jeg tror nok at de fleste som går videre med php og lager litt større ting på et eller annet tidspunkt vil bytte ut includene sine med enten templates eller bare header()/footer() funksjoner. Include er ikke særlig fleksibelt.

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...